)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"d897ea51bc1c0f730501dc6e42b0e7c4499d4715","unresolved":true,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2022-01-12 16:51:19 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Lightbits LightOS driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This commit introduces the LightOS driver for cinder. LightOS is a software-defined disaggregated clustered storage solution running on commodity servers with commodity SSDs. It it developed by Lightbits Labs (https://www.lightbitslabs.com) and is actively developed and maintained. LightOS is proprietary but the openstack drivers are licensed under Apache v2.0."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"The Cinder driver for LightOS currently supports the following functionality:"},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"7f6291cd_0839ff9f","line":9,"range":{"start_line":8,"start_character":0,"end_line":9,"end_character":363},"updated":"2022-01-13 17:19:33.000000000","message":"-1: Please try to keep each line of the commit message within the 72 characters limit as described in https://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"3d34d87a49da5c217c43628e2e10640e85be30f1","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2022-01-12 16:51:19 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Lightbits LightOS driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This commit introduces the LightOS driver for cinder. LightOS is a software-defined disaggregated clustered storage solution running on commodity servers with commodity SSDs. It it developed by Lightbits Labs (https://www.lightbitslabs.com) and is actively developed and maintained. LightOS is proprietary but the openstack drivers are licensed under Apache v2.0."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"The Cinder driver for LightOS currently supports the following functionality:"},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"ac6f367f_4ecf4dcc","line":9,"range":{"start_line":8,"start_character":0,"end_line":9,"end_character":363},"in_reply_to":"7f6291cd_0839ff9f","updated":"2022-01-14 10:43:18.000000000","message":"Ack","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"d897ea51bc1c0f730501dc6e42b0e7c4499d4715","unresolved":true,"context_lines":[{"line_number":31,"context_line":"We are glad to join the openstack community and hope to get your feedback and comments on this driver, and if it is acceptable, to see it merged into the tree."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Signed-off-by: Yuval Brave  yuval@lightbitslabs.com"},{"line_number":34,"context_line":"Change-Id: I8e6eab23419a4e7f092bb49aa85a4aaab5a8ba38"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"dd7f0245_333c767f","line":34,"updated":"2022-01-13 17:19:33.000000000","message":"This patch is going to need to pass the CI before it is merged, and for that it will need the os-brick patch, so you will need to add it as a dependency:\n\n Depends-On: I2e86fa84049053b7c75421d33ad1a1af459ef4e0","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"3d34d87a49da5c217c43628e2e10640e85be30f1","unresolved":false,"context_lines":[{"line_number":31,"context_line":"We are glad to join the openstack community and hope to get your feedback and comments on this driver, and if it is acceptable, to see it merged into the tree."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Signed-off-by: Yuval Brave  yuval@lightbitslabs.com"},{"line_number":34,"context_line":"Change-Id: I8e6eab23419a4e7f092bb49aa85a4aaab5a8ba38"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"34748b00_318c7fed","line":34,"in_reply_to":"dd7f0245_333c767f","updated":"2022-01-14 10:43:18.000000000","message":"Ack","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"04fb2d8afc4558d7087876c0675b1beca20eaa45","unresolved":true,"context_lines":[{"line_number":9,"context_line":"This commit introduces the LightOS driver for cinder."},{"line_number":10,"context_line":"LightOS is a software-defined disaggregated clustered storage solution"},{"line_number":11,"context_line":"running on commodity servers with commodity SSDs."},{"line_number":12,"context_line":"It it developed by Lightbits Labs (https://www.lightbitslabs.com)"},{"line_number":13,"context_line":"and is actively developed and maintained."},{"line_number":14,"context_line":"LightOS is proprietary but the openstack drivers are licensed under Apache v2.0."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"5a7b2947_6887d064","line":12,"range":{"start_line":12,"start_character":3,"end_line":12,"end_character":6},"updated":"2022-01-14 12:23:20.000000000","message":"is","commit_id":"67748eb107d066f3e08d2dacb0684215a6d06818"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"b52da1852c09e419dcd96a962e3beddfb9dff170","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This commit introduces the LightOS driver for cinder."},{"line_number":10,"context_line":"LightOS is a software-defined disaggregated clustered storage solution"},{"line_number":11,"context_line":"running on commodity servers with commodity SSDs."},{"line_number":12,"context_line":"It it developed by Lightbits Labs (https://www.lightbitslabs.com)"},{"line_number":13,"context_line":"and is actively developed and maintained."},{"line_number":14,"context_line":"LightOS is proprietary but the openstack drivers are licensed under Apache v2.0."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"4c318289_e9efa89f","line":12,"range":{"start_line":12,"start_character":3,"end_line":12,"end_character":6},"in_reply_to":"5a7b2947_6887d064","updated":"2022-01-15 09:52:54.000000000","message":"Ack","commit_id":"67748eb107d066f3e08d2dacb0684215a6d06818"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"56d46bdafa56c7c200476c62aa4a07825d93e5bb","unresolved":true,"context_lines":[{"line_number":11,"context_line":"running on commodity servers with commodity SSDs."},{"line_number":12,"context_line":"It is developed by Lightbits Labs (https://www.lightbitslabs.com)"},{"line_number":13,"context_line":"and is actively developed and maintained."},{"line_number":14,"context_line":"LightOS is proprietary but the openstack drivers are licensed under Apache v2.0."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"The Cinder driver for LightOS currently supports the following functionality:"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"6d752253_258a8fd3","line":14,"updated":"2022-01-17 17:59:36.000000000","message":"nit: Line too long","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"a2d0612d21312ee7a9012398614663c9decc39dc","unresolved":false,"context_lines":[{"line_number":11,"context_line":"running on commodity servers with commodity SSDs."},{"line_number":12,"context_line":"It is developed by Lightbits Labs (https://www.lightbitslabs.com)"},{"line_number":13,"context_line":"and is actively developed and maintained."},{"line_number":14,"context_line":"LightOS is proprietary but the openstack drivers are licensed under Apache v2.0."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"The Cinder driver for LightOS currently supports the following functionality:"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"c48ce552_eaf1329a","line":14,"in_reply_to":"6d752253_258a8fd3","updated":"2022-01-18 19:48:15.000000000","message":"Done","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"578ea335e1e6ad40307271b141e3c3af98d320b8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"1b4cebc8_ee39d503","updated":"2021-12-13 16:09:42.000000000","message":"This patch will currently fail pep8 tests -- you can run \"tox -e pep8\" locally to see the results.","commit_id":"877cdbb0c879338f1a385ccd631a57baf771731e"},{"author":{"_account_id":32966,"name":"jiang guodao","email":"jguodao@vmware.com","username":"jguodao"},"change_message_id":"307d862e29de01edbddb894552ac0ef2e0fc0f24","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"6426c8df_ecf11dfd","updated":"2022-01-10 08:11:54.000000000","message":"vmware-recheck-patch","commit_id":"69cb7da4d8965c3e504665f2ebab357f5465a442"},{"author":{"_account_id":28801,"name":"Cisco Cinder CI","email":"cisco-cinder-ci@cisco.com","username":"cisco-cinder-ci"},"change_message_id":"edc1499fc3afbc674bbe435c1f9ed754c026a488","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"0d8b884a_09eb5954","updated":"2022-01-12 04:10:42.000000000","message":"cisco-cinder-ci","commit_id":"cf030b58823d5676f160145e89c7265059343e61"},{"author":{"_account_id":32966,"name":"jiang guodao","email":"jguodao@vmware.com","username":"jguodao"},"change_message_id":"b4c0196d19a5346639976d9eddefa493148a8c6a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"d281f14a_940bb6ae","updated":"2022-01-12 07:33:37.000000000","message":"vmware-recheck-patch","commit_id":"cf030b58823d5676f160145e89c7265059343e61"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"748f742f36e40cdc9f44255dc5aa2f237e3435df","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"86122711_22d63351","updated":"2022-01-13 14:50:13.000000000","message":"Just took a brief look and connect_volume and disconnect_volume methods doesn\u0027t make sense and don\u0027t server any purpose in the driver code.","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"14090d12b6afaa29b29ba5e5b6dbf1b7c4d2e482","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"45564355_8fa65fcc","updated":"2022-01-13 18:36:30.000000000","message":"Looking at the response from the LighBits CI I am a lot confused....\nApart from the fact it has only reported once and there have been updates to this code since that run - you need to pass after every new patchset - you seem to be running EVERY unit test from every vendor - this is massive overkill and completely unnecessary.\nAdditionally, I see a tempest FAILURE early on in the log, but this is not being should in the final failure report and therefore the CI appears to pass - not completely convinced about that.","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"22c80c31b4188f86eb3617e4747cab9b9d1689b3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"0c911b71_dcca3f85","updated":"2022-01-13 22:04:34.000000000","message":"Please make sure you\u0027ve read through all requirements from https://wiki.openstack.org/wiki/Cinder/how-to-contribute-a-driver","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"d897ea51bc1c0f730501dc6e42b0e7c4499d4715","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"b6b6ef2d_df9abf13","updated":"2022-01-13 17:19:33.000000000","message":"Sorry for all the comments, but there are some cases that we know from experience have been pain points in other drivers that would be best to avoid if possible here.\n\n-1: Missing tests\n-1: Missing release note","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"8516394cadd55b34784d36232a3c61993f1886f2","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":10,"id":"eeda188a_6e5920a5","updated":"2022-01-14 09:04:26.000000000","message":"Thank you Gorka and Rajat for the review! Yuval and I are working to address it and will upload a new patchset as soon as it passes our internal testing.","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"12ce2f5d44e390bc6ad829dbbddb0da8e76972b1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"40ab7213_6ba3da5a","updated":"2022-01-13 15:00:02.000000000","message":"You also need test code for the driver - I don\u0027t see that in this patch","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"ac9b8d3e38464569f41e296808b2931365420c6f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"2d49bae7_225e2c26","in_reply_to":"40ab7213_6ba3da5a","updated":"2022-01-14 08:58:27.000000000","message":"You are right, unittest are on the way, will be uploaded soon.","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"fa91dde762114b10ec8c54f06b992b489e7efc38","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"05554530_4aae1ec5","in_reply_to":"45564355_8fa65fcc","updated":"2022-01-14 08:57:22.000000000","message":"Hey, you are right, we have few issue with the ci - also the current patch is not working - volume creation fails - so the whole CI is unstable.\nThe CI response is also been fixed - last night the team discussed it.\n\nThank you for noticing and we will make it work asap!","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"2402c33a82dc092dd59fcb991d1cdac767fc8c78","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"025ba844_378e7622","in_reply_to":"eeda188a_6e5920a5","updated":"2022-01-30 09:33:07.000000000","message":"Done","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"04fb2d8afc4558d7087876c0675b1beca20eaa45","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"14262420_85961d95","updated":"2022-01-14 12:23:20.000000000","message":"1] In commit message, Third Party CI name can be specified.\n2] Unit tests can be added:\ncinder/tests/unit/volume/drivers\n3] Support matrix can be updated:\ndoc/source/reference/support-matrix.ini\n4] Release note can be added.\n\nIn previous release, a driver was added.\nYou may take a look for reference \u0026 also go through review comments.\nhttps://review.opendev.org/c/openstack/cinder/+/768574\n","commit_id":"67748eb107d066f3e08d2dacb0684215a6d06818"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"3d34d87a49da5c217c43628e2e10640e85be30f1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"fb75a77f_53f7030c","updated":"2022-01-14 10:43:18.000000000","message":"Comments I ack means I changed and currently testing.\nThe issue with copy_image_to and copy_volume_to - need to verified.\n\nGorka thanks for all the comments we are taking them very seriously.\nwill upload a patch today ","commit_id":"67748eb107d066f3e08d2dacb0684215a6d06818"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"70ffb34b807f1b0b8dfeed57b8c5b29900d942e6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"aba6d393_828158f1","updated":"2022-01-14 14:09:44.000000000","message":"Still -1 until unit tests, release notes and documentation are added. Also the support matrix needs updating.","commit_id":"67748eb107d066f3e08d2dacb0684215a6d06818"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"3ad4dffaf904e7a8b42562a740ab1116dc301ec0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"535118c7_a02a0688","in_reply_to":"14262420_85961d95","updated":"2022-01-14 15:28:37.000000000","message":"Thanks we will update it","commit_id":"67748eb107d066f3e08d2dacb0684215a6d06818"},{"author":{"_account_id":32966,"name":"jiang guodao","email":"jguodao@vmware.com","username":"jguodao"},"change_message_id":"029f798f2b392163533c13488f2c6fdb40cd556d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"41406d5a_d5bd1917","updated":"2022-01-17 01:40:05.000000000","message":"vmware-recheck-patch","commit_id":"a66d1c520ec359c91f9478780f9180b11f60b056"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"9c5ff77a9a6e94a3b202df414ae7b424dc29e235","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"ba7f0d5b_668e1fce","updated":"2022-01-17 18:51:23.000000000","message":"Documentation comments...","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b0fee75613ed5e061916ae4b4a4a12945bbbccf8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"f7ea8071_2351085a","updated":"2022-01-18 00:13:54.000000000","message":"Looks like Gorka and Simon have been very thorough in their reviews; thanks for addressing them quickly.  I have some comments inline, but nothing too major.\n\nUnit test coverage is about 61%, but it looks like all the major functions are covered.\n\nThird-party CI is responding automatically on this patch, and I\u0027ve seen it respond on at least 2 other patches, namely:\n- https://review.opendev.org/c/openstack/cinder/+/799871\n- https://review.opendev.org/c/openstack/cinder/+/824995\n\nAs far as CI reporting goes, I have a few comments:\n- Zuul will run unit and functional tests on each patch, you don\u0027t have to (it just clutters the logs)\n- It looks like you are running tempest, but not the cinder-tempest-plugin tests (which are required)\n- The posted logs are very minimal; while you\u0027re posting the cinder.conf, it would be good to at least have the tempest conf posted as well so we can easily see what tests are being skipped and what tests are enabled\n- Typically we encourage the third party CIs to post what Zuul does; I thought we had a statement about that somewhere but I can\u0027t find it.  Ideally, you\u0027d post something like, for example, this set of logs: http://openstack-logs.purestorage.com/02/821602/12/thirdparty-check/pure-devstack-cinder-tempest-iscsi-aio/8412835/  But I won\u0027t hold up your patch over this (unless one of the other reviewers points out where this is stated in the cinder third-party CI requirements)\n","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"36b1ebe7dfece1eff46514be242ddc09c4997367","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"850cd956_ca64ca7b","updated":"2022-01-18 18:16:00.000000000","message":"Thank you all for the detailed reviews, Yuval will upload a new patchset in a bit.","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"56d46bdafa56c7c200476c62aa4a07825d93e5bb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"aaa7f293_774544e8","updated":"2022-01-17 17:59:36.000000000","message":"Thank you for making all those changes so quickly!!\nI think the driver is mostly ready, there are just 2 small things, one is removing an unused config option, and the other is the case where it should be removing all the ACLs/exports.","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"1db535f881956725d4c072c3bb178e0d4f3d777b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"980b90f9_f7d5b865","updated":"2022-01-17 18:32:41.000000000","message":"Your documentation is messed up.\nCheckout the rendering https://e6f2c5342d047adf138f-b9af9dcc921d9a146a71ab81c762059f.ssl.cf2.rackcdn.com/821602/13/check/openstack-tox-docs/8843812/docs/drivers.html#lightosvolumedriver","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":22248,"name":"HPE AlletraMP iSCSI CI","email":"hp.cinder.blr.ci@groups.ext.hpe.com","username":"hp-storage-blr-ci","tags":["SERVICE_USER"]},"change_message_id":"f338a75c493426ae9a8e893a4201aa3bf42678ed","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"156fb4c1_1b7e01f1","updated":"2022-01-17 10:25:12.000000000","message":"run-Nimble Storage Alletra 6k CI","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":22248,"name":"HPE AlletraMP iSCSI CI","email":"hp.cinder.blr.ci@groups.ext.hpe.com","username":"hp-storage-blr-ci","tags":["SERVICE_USER"]},"change_message_id":"ccf0c21e4c30458a4d5820067ca8ff35d5657c4f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"4d0989fe_6aba7dd5","updated":"2022-01-17 05:00:19.000000000","message":"run-Nimble Storage Alletra 6k CI","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":32966,"name":"jiang guodao","email":"jguodao@vmware.com","username":"jguodao"},"change_message_id":"b95ce2367f9acf3e35dc2ac17dd1b4596f60c5c1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"517e31c6_518d88d4","updated":"2022-01-17 01:55:42.000000000","message":"vmware-recheck-patch","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":32966,"name":"jiang guodao","email":"jguodao@vmware.com","username":"jguodao"},"change_message_id":"711a34951b2fbf7638ca94abb97331f5e833b6c0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"60aced96_86fec99a","updated":"2022-01-17 04:28:33.000000000","message":"vmware-recheck-patch","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"2644dcdb17096b43f604c582357cec827061bfd2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"bae7fe97_f9d8a571","updated":"2022-01-18 18:19:17.000000000","message":"will upload a patch with the with requested changes","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"36b1ebe7dfece1eff46514be242ddc09c4997367","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"04e4bf9d_ed9345e5","in_reply_to":"980b90f9_f7d5b865","updated":"2022-01-18 18:16:00.000000000","message":"Indeed, thanks for pointing it out. Let me figure out why it happened...","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"36b1ebe7dfece1eff46514be242ddc09c4997367","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"bad692df_af9db82f","in_reply_to":"aaa7f293_774544e8","updated":"2022-01-18 18:16:00.000000000","message":"Thanks, we fixed both of these in the latest version.","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"b2475af0b988eb409075c21eea8ab151a7545b96","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"db0bc5a8_b018f9a0","in_reply_to":"f7ea8071_2351085a","updated":"2022-01-19 21:09:39.000000000","message":"We updated the ci.\n - removed unittests\n - added tempest cinder plugin","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":22248,"name":"HPE AlletraMP iSCSI CI","email":"hp.cinder.blr.ci@groups.ext.hpe.com","username":"hp-storage-blr-ci","tags":["SERVICE_USER"]},"change_message_id":"112ba48fd7bbf8ff078eb68d31ad5b1df59a618a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"b02511d1_087e2228","updated":"2022-01-19 08:06:45.000000000","message":"run-HPE Storage CI","commit_id":"c22d15bd13fc6b046af9ecb8cbebcc82baa7e5f2"},{"author":{"_account_id":22248,"name":"HPE AlletraMP iSCSI CI","email":"hp.cinder.blr.ci@groups.ext.hpe.com","username":"hp-storage-blr-ci","tags":["SERVICE_USER"]},"change_message_id":"6ad50b06fc963c9449e1dc26f9d0db1c8963df9e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"b5f6338b_df4d2f55","updated":"2022-01-19 06:23:34.000000000","message":"run-HPE Storage CI","commit_id":"c22d15bd13fc6b046af9ecb8cbebcc82baa7e5f2"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"3428e97aca901e0a59af2014585e85844e087b0e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"1612197a_3e2a1cfb","updated":"2022-01-19 14:53:44.000000000","message":"Still issues with that documentation page....","commit_id":"d458013f6de78d5e6d8defd7e164ba34a369e762"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"7daaa5011def365cf608e6756f2ecbd956c7ec6a","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":15,"id":"4cabfa4e_99ca8aec","in_reply_to":"1612197a_3e2a1cfb","updated":"2022-01-19 16:54:19.000000000","message":"indeed... grrr, I was sure we fixed it. Looking at it again. It seems that (on a clean checkout of master) some other drivers are also suffering from this issue of getting the wrong table of config options, for example the datera driver. I am debugging it.","commit_id":"d458013f6de78d5e6d8defd7e164ba34a369e762"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"00b75fe12cdcdf37f55007af9847fcacaade762f","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":15,"id":"a96b590d_7368b96d","in_reply_to":"215e1a24_8fb56b1c","updated":"2022-01-19 18:07:31.000000000","message":"Looks like this shoyuld be mentioned in the contributing new drivers documentation. Yes, the docs build should be looked at as well.\nThanks for sorting this out.","commit_id":"d458013f6de78d5e6d8defd7e164ba34a369e762"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"66c7be33f42ce14f01f9b433d3e440c3959666f7","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":15,"id":"215e1a24_8fb56b1c","in_reply_to":"4cabfa4e_99ca8aec","updated":"2022-01-19 17:54:29.000000000","message":"FWIW, the issue is that the volume driver needs to provide a classmethod `get_driver_options`, which the docs build calls. Drivers that do not provide it, as we did not, get a default set of iscsi configuration options in the documentation. The docs build should probably error out on drivers that lack `get_driver_otions`. We\u0027ll upload a new patchset in the next few hours that fixes this for the LightOS driver.","commit_id":"d458013f6de78d5e6d8defd7e164ba34a369e762"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"6bf113f6b670baa3577e296e9f1a36547b90aa30","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"2de9fb5e_75618a42","in_reply_to":"a96b590d_7368b96d","updated":"2022-01-30 09:25:41.000000000","message":"Ack","commit_id":"d458013f6de78d5e6d8defd7e164ba34a369e762"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"37c8b6cc98b24454beaa71b8e4d1ee86f8df114d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"5f55fd27_6bee387b","updated":"2022-01-20 13:18:37.000000000","message":"Apologies for not finding all the issues on a single review.","commit_id":"4cc67357c17a72aa5fe42816df4f34d574bf1da8"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"ab8cf4b16532dc6ef30647a7d5202f06283b85ff","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"13c52609_4f9e5d42","updated":"2022-01-20 05:04:24.000000000","message":"Looks like all comments have been addressed.","commit_id":"4cc67357c17a72aa5fe42816df4f34d574bf1da8"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"10f91680991de8a394a4a549fb9e11f16b62cce4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"f24fa91b_30256eb6","updated":"2022-01-20 13:59:34.000000000","message":"Uploading a fix soon","commit_id":"4cc67357c17a72aa5fe42816df4f34d574bf1da8"},{"author":{"_account_id":22248,"name":"HPE AlletraMP iSCSI CI","email":"hp.cinder.blr.ci@groups.ext.hpe.com","username":"hp-storage-blr-ci","tags":["SERVICE_USER"]},"change_message_id":"0bb9e9124452e490cfbbd795969fa9812f2f90af","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"8d1a30bd_69bc893c","updated":"2022-01-20 06:49:07.000000000","message":"run-HPE Storage CI","commit_id":"4cc67357c17a72aa5fe42816df4f34d574bf1da8"},{"author":{"_account_id":34470,"name":"Yan Tseitlin","email":"yan@lightbitslabs.com","username":"yants"},"change_message_id":"cafdf3c0ea69ac06f6974274fadb5c1f2f3c8c9a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"ad8986a9_6c240922","updated":"2022-01-20 08:27:44.000000000","message":"run-Lightbits CI","commit_id":"4cc67357c17a72aa5fe42816df4f34d574bf1da8"},{"author":{"_account_id":34470,"name":"Yan Tseitlin","email":"yan@lightbitslabs.com","username":"yants"},"change_message_id":"b6bafac490419f71ede66294ef4d2c7657629f4f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"ff53cd7a_4d12936b","updated":"2022-01-20 08:23:18.000000000","message":"run-Lightbits CI","commit_id":"4cc67357c17a72aa5fe42816df4f34d574bf1da8"},{"author":{"_account_id":34470,"name":"Yan Tseitlin","email":"yan@lightbitslabs.com","username":"yants"},"change_message_id":"f6afca3eb2d6889b177af659f4ff5861d313d46c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"dd9de76c_0b52bd44","updated":"2022-01-20 18:10:00.000000000","message":"run-Lightbits CI","commit_id":"b3e7e6043d4594685b4e3476972390ee971b5840"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"ecae5aad1dc694baa2aea8a63c08a216676681dd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"5fdee721_e7391f14","updated":"2022-01-21 07:43:57.000000000","message":"Some minor comments \u0026 optimizations.","commit_id":"663891e17ce78408939163b048d30c5cf6dca0d6"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"dd2a302e276c11008ece08a51d013c247f6092a9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"fd5231e9_dd1f021f","updated":"2022-01-21 12:44:43.000000000","message":"uploading a fix soon","commit_id":"663891e17ce78408939163b048d30c5cf6dca0d6"},{"author":{"_account_id":28403,"name":"Naoki Saito","email":"nasaito@nec.com","username":"n-saito"},"change_message_id":"f0e17f9bd5dec89d3d79d89c222dd0fd59d65c81","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"3d36932e_a057ab34","updated":"2022-01-22 01:25:26.000000000","message":"Your CI logs need to include local.conf and logs for all services in cinder.\nIt is better if logs include devstack log.\nAlso Driver supports Multiattach, but it has not been tested with CI.\nSample of local.conf is : https://fl9-119-243-99-132.tky.mesh.ad.jp/14/815614/10/20220121180238/NEC-V-ISCSI/logs/etc/local.conf.txt","commit_id":"693e126ec29d7997e7ff3e5868bf78ea8a38ea9e"},{"author":{"_account_id":28403,"name":"Naoki Saito","email":"nasaito@nec.com","username":"n-saito"},"change_message_id":"3d9a8480cf1efc80e8e1d4c006c14cf68be74213","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":20,"id":"d6b41b15_4664d449","in_reply_to":"21dea075_a5ffe26a","updated":"2022-01-24 01:05:21.000000000","message":"Sorry, the tempest.conf of your CI is already enable multiattach test.\nhttps://github.com/LightBitsLabs/logs/blob/main/23_01_2022_22:44:03/tempest.conf#L511\n\nThe multiattach test runs in tempest.api.compute.\nYour CI don\u0027t runs tempest.api.compute tests.\nhttps://fl9-119-243-99-132.tky.mesh.ad.jp/14/815614/10/20220121180238/NEC-V-FC/console.txt\n{2} tempest.api.compute.volumes.test_attach_volume.AttachVolumeMultiAttachTest.test_boot_from_multiattach_volume [46.151786s] ... ok\n\nhttps://github.com/LightBitsLabs/logs/blob/main/23_01_2022_22:44:03/tempest_tempest.api.volume.log","commit_id":"693e126ec29d7997e7ff3e5868bf78ea8a38ea9e"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"5fd91c90cf264b1fdb48b3bb2b496186abb97a8b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"2286e9a4_e0ff7f37","in_reply_to":"2b10796b_218e245f","updated":"2022-01-24 15:55:27.000000000","message":"Thanks for your comments and review!","commit_id":"693e126ec29d7997e7ff3e5868bf78ea8a38ea9e"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"ac33d9645ff25c8f9b52ccfee6f5c6f51e2bf03e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"77c7755e_7cc1d343","in_reply_to":"3d36932e_a057ab34","updated":"2022-01-23 09:37:05.000000000","message":"Hey Naoki, \nThanks for the review!\ncurrently we dont use devstack.\nwhich test verify \"Multiattach\"?\nWe dont use local.conf file - which services the file configure? and I will upload the .conf for those services","commit_id":"693e126ec29d7997e7ff3e5868bf78ea8a38ea9e"},{"author":{"_account_id":28403,"name":"Naoki Saito","email":"nasaito@nec.com","username":"n-saito"},"change_message_id":"23894e623e4ebcc6217beff986473b67f7ac393a","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":20,"id":"21dea075_a5ffe26a","in_reply_to":"77c7755e_7cc1d343","updated":"2022-01-24 00:34:02.000000000","message":"In that case, you should enable the Multiattach test in tempest.conf.\nA sample is as follows. \nhttps://fl9-119-243-99-132.tky.mesh.ad.jp/14/815614/10/20220121180238/NEC-V-FC/logs/etc/tempest.conf.txt\n[compute-feature-enabled]\nvolume_multiattach \u003d True\n\nYou need to put logs for cinder-api and cinder-scheduler.\nYou can find them in the \u0027revew check list\u0027 below.\nhttps://docs.openstack.org/cinder/latest/contributor/new_driver_checklist.html\ncinder.conf and all cinder service logs available","commit_id":"693e126ec29d7997e7ff3e5868bf78ea8a38ea9e"},{"author":{"_account_id":28403,"name":"Naoki Saito","email":"nasaito@nec.com","username":"n-saito"},"change_message_id":"6f52cc928d8b3bd2ceb6184da8ff3caefe20a84e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"2b10796b_218e245f","in_reply_to":"d6b41b15_4664d449","updated":"2022-01-24 14:02:10.000000000","message":"The multiattach and the tempest.api.compute tests have passed, and my comments have been addressed, thank you.","commit_id":"693e126ec29d7997e7ff3e5868bf78ea8a38ea9e"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"de8579ca739e64f3ee021d8704c46b9407e3164b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"0a814f39_df517775","updated":"2022-01-24 13:31:21.000000000","message":"All tests passing and comments addressed... LGTM","commit_id":"30832d8d37596a060b5b0532953b2c5cc5c5a6be"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"8c508f1e54eeb4bee23a0cd86a7760b16662c29a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"7b2600f9_c95f2735","updated":"2022-01-25 23:39:25.000000000","message":"I don\u0027t see any code problems; the items flagged for follow-up patches are appropriate and don\u0027t need to be fixed here.\n\nOne problem with the CI is that you are claiming support for extending an attached volume, but those tests are being skipped -- for example:\nhttps://github.com/LightBitsLabs/logs/blob/main/24_01_2022_13:17:20/tempest_tempest.api.volume_and_api.compute.volumes.log#L154\n\nOther than that issue, I\u0027m +2 on this patch.","commit_id":"30832d8d37596a060b5b0532953b2c5cc5c5a6be"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"ac2f9bf17f711629e4261bbf1f992f32a20246e6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"fe48861c_219b73bd","updated":"2022-01-24 11:04:52.000000000","message":"My comments from PS19 have been addressed. Zuul and Lightbits CI have passed. So +1.","commit_id":"30832d8d37596a060b5b0532953b2c5cc5c5a6be"},{"author":{"_account_id":28403,"name":"Naoki Saito","email":"nasaito@nec.com","username":"n-saito"},"change_message_id":"23894e623e4ebcc6217beff986473b67f7ac393a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"7b1f7d33_e5ac1627","updated":"2022-01-24 00:34:02.000000000","message":"Thanks for responding to my comment.","commit_id":"30832d8d37596a060b5b0532953b2c5cc5c5a6be"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b9a7f981cf1cfbfc9e2c24b58f114c6a5c78f20b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"a3a8cd0a_50b2dc37","updated":"2022-01-26 13:20:49.000000000","message":"The only problem I had noticed in my previous review was that the CI wasn\u0027t running the extend-attached-volume tests, and that has been fixed.  Most recent CI run is with those tests enabled.  So at this point, all my concerns have been addressed.","commit_id":"30832d8d37596a060b5b0532953b2c5cc5c5a6be"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"81f9a22dce8ba2ebe949c4a57b782cecfde9a2c1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"c2f303a4_7963faca","updated":"2022-01-26 14:06:12.000000000","message":"There are more cases than the ones I commented in the code where we shouldn\u0027t be requesting translation using the _ method, since the exception isn\u0027t going to get to the end user.  For example the _create_volume method.\n\nWe should only have it on exceptions we raise inside the initialize_connection or terminate_connection or methods called from there.\n\nI would usually downvote for this and the \"LOG.warn\" usage, but all things considered I think that would be unfair at this point, so I won\u0027t vote instead.\n","commit_id":"30832d8d37596a060b5b0532953b2c5cc5c5a6be"},{"author":{"_account_id":34470,"name":"Yan Tseitlin","email":"yan@lightbitslabs.com","username":"yants"},"change_message_id":"5b34fe8d239e9933faff1e88261643b7f96aeb22","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"52ba5e1b_0433a90b","updated":"2022-01-26 07:37:04.000000000","message":"run-Lightbits CI","commit_id":"30832d8d37596a060b5b0532953b2c5cc5c5a6be"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"742e3763e311041735c4079f97bb2c4b59fcf1e0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"3cc6b6b0_1583e657","updated":"2022-01-27 03:56:19.000000000","message":"All looking good. Thanks for addressing our MANY comments over the past few weeks.","commit_id":"beb2879793099a0c574c97bd6683f4128f430b3e"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"9956059a62badd18a0b3a18e20bac5fbe4dc9a0e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"f774b29f_de6bc13c","updated":"2022-01-27 02:33:35.000000000","message":"Changes between PS21 and PS22 LGTM, and CI is passing.","commit_id":"beb2879793099a0c574c97bd6683f4128f430b3e"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"6bf113f6b670baa3577e296e9f1a36547b90aa30","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"2ff3bd87_9be37662","updated":"2022-01-30 09:25:41.000000000","message":"Just some comment resolution cleanup. I believe all pre-merge issues have been addressed and everything else will be addressed in follow-on patches. Thank you everyone for the constructive discussion and illuminating comments.","commit_id":"beb2879793099a0c574c97bd6683f4128f430b3e"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"47304cd5f513fde2a573808e5b61f56cf29e0ec1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"86e1cf87_dc07ad83","updated":"2022-01-27 22:43:30.000000000","message":"My comments were all nits and things that could be fixed with a follow-up patch.  +2  Thanks for working with us to address comments.","commit_id":"beb2879793099a0c574c97bd6683f4128f430b3e"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"97ce2d3eb1c6c2ed7b532fe1ed8e429e3e3a48bb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"8d65f578_6aa6a3cf","updated":"2022-01-28 10:18:20.000000000","message":"Only time will tell, but it looks good to me.\nThank you Yuval for your effort to accommodate requested changes.","commit_id":"beb2879793099a0c574c97bd6683f4128f430b3e"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"e33dde4aaae94c37acc5e4ef39ae4249fbebec9f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"e55f34f4_2b60dfd5","updated":"2022-02-02 02:49:48.000000000","message":"os-brick connector has merged.","commit_id":"beb2879793099a0c574c97bd6683f4128f430b3e"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"6f13889eb8503c118a5b61c5de471ab9436b5f5a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"a30ac173_f4827686","in_reply_to":"86e1cf87_dc07ad83","updated":"2022-01-28 09:14:55.000000000","message":"Thanks Jay, I will sure to followup with fixes","commit_id":"beb2879793099a0c574c97bd6683f4128f430b3e"}],"cinder/volume/drivers/lightos.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"578ea335e1e6ad40307271b141e3c3af98d320b8","unresolved":true,"context_lines":[{"line_number":56,"context_line":"    cfg.StrOpt(\u0027lightos_api_address\u0027,"},{"line_number":57,"context_line":"               default\u003dNone,"},{"line_number":58,"context_line":"               help\u003d\u0027The IP addresses of the LightOS API servers separated by commas without spaces\u0027),"},{"line_number":59,"context_line":"    cfg.StrOpt(\u0027lightos_api_port\u0027,"},{"line_number":60,"context_line":"               default\u003d\u0027443\u0027,"},{"line_number":61,"context_line":"               help\u003d\u0027The TCP/IP port at which the LightOS API servers listen.\u0027"},{"line_number":62,"context_line":"                    \u0027 Port 443 is used for HTTPS other values are used for HTTP.\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"0d0c9e08_8274ca2a","line":59,"range":{"start_line":59,"start_character":4,"end_line":59,"end_character":14},"updated":"2021-12-13 16:09:42.000000000","message":"This should not be a string, use cfg.PortOpt instead.","commit_id":"877cdbb0c879338f1a385ccd631a57baf771731e"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"6bf113f6b670baa3577e296e9f1a36547b90aa30","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    cfg.StrOpt(\u0027lightos_api_address\u0027,"},{"line_number":57,"context_line":"               default\u003dNone,"},{"line_number":58,"context_line":"               help\u003d\u0027The IP addresses of the LightOS API servers separated by commas without spaces\u0027),"},{"line_number":59,"context_line":"    cfg.StrOpt(\u0027lightos_api_port\u0027,"},{"line_number":60,"context_line":"               default\u003d\u0027443\u0027,"},{"line_number":61,"context_line":"               help\u003d\u0027The TCP/IP port at which the LightOS API servers listen.\u0027"},{"line_number":62,"context_line":"                    \u0027 Port 443 is used for HTTPS other values are used for HTTP.\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"e36575a0_37cad50f","line":59,"range":{"start_line":59,"start_character":4,"end_line":59,"end_character":14},"in_reply_to":"0d0c9e08_8274ca2a","updated":"2022-01-30 09:25:41.000000000","message":"Ack","commit_id":"877cdbb0c879338f1a385ccd631a57baf771731e"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"578ea335e1e6ad40307271b141e3c3af98d320b8","unresolved":true,"context_lines":[{"line_number":64,"context_line":"               default\u003dNone,"},{"line_number":65,"context_line":"               help\u003d\u0027JWT to be used for volume and snapshot operations with the LightOS cluster.\u0027"},{"line_number":66,"context_line":"                    \u0027 Keep this parameter clear if the cluster is installed with multi-tenancy disabled.\u0027),"},{"line_number":67,"context_line":"    cfg.StrOpt(\u0027lightos_skip_ssl_verify\u0027,"},{"line_number":68,"context_line":"               default\u003dFalse,"},{"line_number":69,"context_line":"               help\u003d\u0027skip HTTPS SSL verification with LightOS\u0027),"},{"line_number":70,"context_line":"    cfg.StrOpt(\u0027lightos_volname_template\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"e42e5079_b148f3d8","line":67,"range":{"start_line":67,"start_character":16,"end_line":67,"end_character":39},"updated":"2021-12-13 16:09:42.000000000","message":"No need to add a new option for this, please use the existing driver_ssl_cert_verify option instead.","commit_id":"877cdbb0c879338f1a385ccd631a57baf771731e"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"6bf113f6b670baa3577e296e9f1a36547b90aa30","unresolved":false,"context_lines":[{"line_number":64,"context_line":"               default\u003dNone,"},{"line_number":65,"context_line":"               help\u003d\u0027JWT to be used for volume and snapshot operations with the LightOS cluster.\u0027"},{"line_number":66,"context_line":"                    \u0027 Keep this parameter clear if the cluster is installed with multi-tenancy disabled.\u0027),"},{"line_number":67,"context_line":"    cfg.StrOpt(\u0027lightos_skip_ssl_verify\u0027,"},{"line_number":68,"context_line":"               default\u003dFalse,"},{"line_number":69,"context_line":"               help\u003d\u0027skip HTTPS SSL verification with LightOS\u0027),"},{"line_number":70,"context_line":"    cfg.StrOpt(\u0027lightos_volname_template\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"0f224280_4c3e4a10","line":67,"range":{"start_line":67,"start_character":16,"end_line":67,"end_character":39},"in_reply_to":"e42e5079_b148f3d8","updated":"2022-01-30 09:25:41.000000000","message":"Ack","commit_id":"877cdbb0c879338f1a385ccd631a57baf771731e"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"0db5499c3ea80bcc363baaa73e5cea8f26fb0513","unresolved":true,"context_lines":[{"line_number":58,"context_line":"                    \u0027 the LightOS cluster.\u0027"},{"line_number":59,"context_line":"                    \u0027 Keep this parameter clear if the cluster is installed\u0027"},{"line_number":60,"context_line":"                    \u0027 with multi-tenancy disabled.\u0027),"},{"line_number":61,"context_line":"    cfg.StrOpt(\u0027lightos_volname_template\u0027,"},{"line_number":62,"context_line":"               default\u003d\u0027vol_%s\u0027,"},{"line_number":63,"context_line":"               help\u003d\u0027The template used for constructing LightOS volume names.\u0027"},{"line_number":64,"context_line":"                    \u0027 Within this template, %s is replaced by the cinder\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"657fde0d_1a4dd030","line":61,"updated":"2022-01-05 15:19:59.000000000","message":"Not sure why you are using this. There is a standard volume_name_template provided in the core cinder code.","commit_id":"70470a117415c5ecd88f8ab0338dfbfe92831d06"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"6bf113f6b670baa3577e296e9f1a36547b90aa30","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                    \u0027 the LightOS cluster.\u0027"},{"line_number":59,"context_line":"                    \u0027 Keep this parameter clear if the cluster is installed\u0027"},{"line_number":60,"context_line":"                    \u0027 with multi-tenancy disabled.\u0027),"},{"line_number":61,"context_line":"    cfg.StrOpt(\u0027lightos_volname_template\u0027,"},{"line_number":62,"context_line":"               default\u003d\u0027vol_%s\u0027,"},{"line_number":63,"context_line":"               help\u003d\u0027The template used for constructing LightOS volume names.\u0027"},{"line_number":64,"context_line":"                    \u0027 Within this template, %s is replaced by the cinder\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"85c83398_61d3d588","line":61,"in_reply_to":"16869ff5_3e24e207","updated":"2022-01-30 09:25:41.000000000","message":"Done","commit_id":"70470a117415c5ecd88f8ab0338dfbfe92831d06"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"f1c0e913f628fe4468bc918ca90aceae31c05e76","unresolved":true,"context_lines":[{"line_number":58,"context_line":"                    \u0027 the LightOS cluster.\u0027"},{"line_number":59,"context_line":"                    \u0027 Keep this parameter clear if the cluster is installed\u0027"},{"line_number":60,"context_line":"                    \u0027 with multi-tenancy disabled.\u0027),"},{"line_number":61,"context_line":"    cfg.StrOpt(\u0027lightos_volname_template\u0027,"},{"line_number":62,"context_line":"               default\u003d\u0027vol_%s\u0027,"},{"line_number":63,"context_line":"               help\u003d\u0027The template used for constructing LightOS volume names.\u0027"},{"line_number":64,"context_line":"                    \u0027 Within this template, %s is replaced by the cinder\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"16869ff5_3e24e207","line":61,"in_reply_to":"499516ad_5a2681cd","updated":"2022-01-10 00:51:03.000000000","message":"Exactly, so use the common parameter that is used by every other cinder driver to do this... ie `volume_name_template`","commit_id":"70470a117415c5ecd88f8ab0338dfbfe92831d06"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"2aa76ad6e74dfd6e2f0df0d37cfac4177f96972b","unresolved":true,"context_lines":[{"line_number":58,"context_line":"                    \u0027 the LightOS cluster.\u0027"},{"line_number":59,"context_line":"                    \u0027 Keep this parameter clear if the cluster is installed\u0027"},{"line_number":60,"context_line":"                    \u0027 with multi-tenancy disabled.\u0027),"},{"line_number":61,"context_line":"    cfg.StrOpt(\u0027lightos_volname_template\u0027,"},{"line_number":62,"context_line":"               default\u003d\u0027vol_%s\u0027,"},{"line_number":63,"context_line":"               help\u003d\u0027The template used for constructing LightOS volume names.\u0027"},{"line_number":64,"context_line":"                    \u0027 Within this template, %s is replaced by the cinder\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"499516ad_5a2681cd","line":61,"in_reply_to":"657fde0d_1a4dd030","updated":"2022-01-09 15:27:13.000000000","message":"This is to define the volume name in the lightos cluster.","commit_id":"70470a117415c5ecd88f8ab0338dfbfe92831d06"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"0db5499c3ea80bcc363baaa73e5cea8f26fb0513","unresolved":true,"context_lines":[{"line_number":1058,"context_line":"        # It would be preferable to return"},{"line_number":1059,"context_line":"        # self.byte_to_gb(cluster_stats[\u0027freePhysicalStorage\u0027])"},{"line_number":1060,"context_line":"        # here but we return \u0027infinite\u0027 due to the Cinder bug described in"},{"line_number":1061,"context_line":"        # https://lightbitslabs.atlassian.net/browse/LBM1-11767"},{"line_number":1062,"context_line":"        data[\u0027free_capacity_gb\u0027] \u003d \u0027infinite\u0027"},{"line_number":1063,"context_line":"        data[\u0027thin_provisioning_support\u0027] \u003d True"},{"line_number":1064,"context_line":"        data[\u0027compression\u0027] \u003d True"}],"source_content_type":"text/x-python","patch_set":5,"id":"935cf930_8598a91c","line":1061,"updated":"2022-01-05 15:19:59.000000000","message":"Could you reference a bug report that is publicly visible","commit_id":"70470a117415c5ecd88f8ab0338dfbfe92831d06"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"6bf113f6b670baa3577e296e9f1a36547b90aa30","unresolved":false,"context_lines":[{"line_number":1058,"context_line":"        # It would be preferable to return"},{"line_number":1059,"context_line":"        # self.byte_to_gb(cluster_stats[\u0027freePhysicalStorage\u0027])"},{"line_number":1060,"context_line":"        # here but we return \u0027infinite\u0027 due to the Cinder bug described in"},{"line_number":1061,"context_line":"        # https://lightbitslabs.atlassian.net/browse/LBM1-11767"},{"line_number":1062,"context_line":"        data[\u0027free_capacity_gb\u0027] \u003d \u0027infinite\u0027"},{"line_number":1063,"context_line":"        data[\u0027thin_provisioning_support\u0027] \u003d True"},{"line_number":1064,"context_line":"        data[\u0027compression\u0027] \u003d True"}],"source_content_type":"text/x-python","patch_set":5,"id":"bd134b15_20b15466","line":1061,"in_reply_to":"5d4cc5de_d3419494","updated":"2022-01-30 09:25:41.000000000","message":"Done","commit_id":"70470a117415c5ecd88f8ab0338dfbfe92831d06"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"ddaef75a3bd766fd8af337fe476b04cbb80d7e62","unresolved":true,"context_lines":[{"line_number":1058,"context_line":"        # It would be preferable to return"},{"line_number":1059,"context_line":"        # self.byte_to_gb(cluster_stats[\u0027freePhysicalStorage\u0027])"},{"line_number":1060,"context_line":"        # here but we return \u0027infinite\u0027 due to the Cinder bug described in"},{"line_number":1061,"context_line":"        # https://lightbitslabs.atlassian.net/browse/LBM1-11767"},{"line_number":1062,"context_line":"        data[\u0027free_capacity_gb\u0027] \u003d \u0027infinite\u0027"},{"line_number":1063,"context_line":"        data[\u0027thin_provisioning_support\u0027] \u003d True"},{"line_number":1064,"context_line":"        data[\u0027compression\u0027] \u003d True"}],"source_content_type":"text/x-python","patch_set":5,"id":"5d4cc5de_d3419494","line":1061,"in_reply_to":"935cf930_8598a91c","updated":"2022-01-09 15:28:39.000000000","message":"updated the code:\nthe bug:\nhttps://bugs.launchpad.net/cinder/+bug/1871371","commit_id":"70470a117415c5ecd88f8ab0338dfbfe92831d06"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"8516394cadd55b34784d36232a3c61993f1886f2","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Copyright (C) 2016-2020 Lightbits Labs Ltd."},{"line_number":2,"context_line":"# Copyright (C) 2020 Intel Corporation"},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":10,"id":"fef8b2a6_b733e4e5","line":1,"updated":"2022-01-14 09:04:26.000000000","message":"@yuval, let\u0027s take the opportunity to bump this up to 2022 (2016-2022)","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"6bf113f6b670baa3577e296e9f1a36547b90aa30","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (C) 2016-2020 Lightbits Labs Ltd."},{"line_number":2,"context_line":"# Copyright (C) 2020 Intel Corporation"},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":10,"id":"35c5d41b_d3b0d06f","line":1,"in_reply_to":"fef8b2a6_b733e4e5","updated":"2022-01-30 09:25:41.000000000","message":"Ack","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"d897ea51bc1c0f730501dc6e42b0e7c4499d4715","unresolved":true,"context_lines":[{"line_number":58,"context_line":"                    \u0027 the LightOS cluster.\u0027"},{"line_number":59,"context_line":"                    \u0027 Keep this parameter clear if the cluster is installed\u0027"},{"line_number":60,"context_line":"                    \u0027 with multi-tenancy disabled.\u0027),"},{"line_number":61,"context_line":"    cfg.StrOpt(\u0027lightos_snapshotname_prefix\u0027,"},{"line_number":62,"context_line":"               default\u003d\u0027openstack_\u0027,"},{"line_number":63,"context_line":"               help\u003d\u0027This prefix is used for constructing LightOS\u0027"},{"line_number":64,"context_line":"                    \u0027 snapshot names.\u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"87670359_46f68fad","line":61,"range":{"start_line":61,"start_character":16,"end_line":61,"end_character":43},"updated":"2022-01-13 17:19:33.000000000","message":"?: Isn\u0027t this the same as the global \"snapshot_name_template\" config option?","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"6bf113f6b670baa3577e296e9f1a36547b90aa30","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                    \u0027 the LightOS cluster.\u0027"},{"line_number":59,"context_line":"                    \u0027 Keep this parameter clear if the cluster is installed\u0027"},{"line_number":60,"context_line":"                    \u0027 with multi-tenancy disabled.\u0027),"},{"line_number":61,"context_line":"    cfg.StrOpt(\u0027lightos_snapshotname_prefix\u0027,"},{"line_number":62,"context_line":"               default\u003d\u0027openstack_\u0027,"},{"line_number":63,"context_line":"               help\u003d\u0027This prefix is used for constructing LightOS\u0027"},{"line_number":64,"context_line":"                    \u0027 snapshot names.\u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"2b012851_2590d232","line":61,"range":{"start_line":61,"start_character":16,"end_line":61,"end_character":43},"in_reply_to":"63aa3fd2_c9dd1da3","updated":"2022-01-30 09:25:41.000000000","message":"Done","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"8516394cadd55b34784d36232a3c61993f1886f2","unresolved":true,"context_lines":[{"line_number":58,"context_line":"                    \u0027 the LightOS cluster.\u0027"},{"line_number":59,"context_line":"                    \u0027 Keep this parameter clear if the cluster is installed\u0027"},{"line_number":60,"context_line":"                    \u0027 with multi-tenancy disabled.\u0027),"},{"line_number":61,"context_line":"    cfg.StrOpt(\u0027lightos_snapshotname_prefix\u0027,"},{"line_number":62,"context_line":"               default\u003d\u0027openstack_\u0027,"},{"line_number":63,"context_line":"               help\u003d\u0027This prefix is used for constructing LightOS\u0027"},{"line_number":64,"context_line":"                    \u0027 snapshot names.\u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa811c06_a9f4b524","line":61,"range":{"start_line":61,"start_character":16,"end_line":61,"end_character":43},"in_reply_to":"87670359_46f68fad","updated":"2022-01-14 09:04:26.000000000","message":"No, this is the LightOS snapshot name, whereas the global snapshot_name_template is the openstack snapshot name. Yuval, WDYT, I don\u0027t recall we ever used this configuration option. Perhaps we should just hard-code it in the driver?","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"3d34d87a49da5c217c43628e2e10640e85be30f1","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                    \u0027 the LightOS cluster.\u0027"},{"line_number":59,"context_line":"                    \u0027 Keep this parameter clear if the cluster is installed\u0027"},{"line_number":60,"context_line":"                    \u0027 with multi-tenancy disabled.\u0027),"},{"line_number":61,"context_line":"    cfg.StrOpt(\u0027lightos_snapshotname_prefix\u0027,"},{"line_number":62,"context_line":"               default\u003d\u0027openstack_\u0027,"},{"line_number":63,"context_line":"               help\u003d\u0027This prefix is used for constructing LightOS\u0027"},{"line_number":64,"context_line":"                    \u0027 snapshot names.\u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"e2d4ec5c_84cc5c41","line":61,"range":{"start_line":61,"start_character":16,"end_line":61,"end_character":43},"in_reply_to":"fa811c06_a9f4b524","updated":"2022-01-14 10:43:18.000000000","message":"This is the same discussion we had over the volume_name_template - we will remove this opt","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"b39a03565f6ef7fbf6d9fe4b154d359cfe13b483","unresolved":true,"context_lines":[{"line_number":58,"context_line":"                    \u0027 the LightOS cluster.\u0027"},{"line_number":59,"context_line":"                    \u0027 Keep this parameter clear if the cluster is installed\u0027"},{"line_number":60,"context_line":"                    \u0027 with multi-tenancy disabled.\u0027),"},{"line_number":61,"context_line":"    cfg.StrOpt(\u0027lightos_snapshotname_prefix\u0027,"},{"line_number":62,"context_line":"               default\u003d\u0027openstack_\u0027,"},{"line_number":63,"context_line":"               help\u003d\u0027This prefix is used for constructing LightOS\u0027"},{"line_number":64,"context_line":"                    \u0027 snapshot names.\u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"63aa3fd2_c9dd1da3","line":61,"range":{"start_line":61,"start_character":16,"end_line":61,"end_character":43},"in_reply_to":"fa811c06_a9f4b524","updated":"2022-01-14 14:52:54.000000000","message":"Yuval tells me I am wrong on the above and we should actually use the global snapshot_name_template, per his discussion with Simon re the volume_name_template. So please ignore the above comment, we\u0027ll fix it.","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"d897ea51bc1c0f730501dc6e42b0e7c4499d4715","unresolved":true,"context_lines":[{"line_number":64,"context_line":"                    \u0027 snapshot names.\u0027"},{"line_number":65,"context_line":"                    \u0027 Changing this parameter will render all\u0027"},{"line_number":66,"context_line":"                    \u0027 previously defined LightOS snapshots inaccessible.\u0027),"},{"line_number":67,"context_line":"    cfg.StrOpt(\u0027lightos_intermediate_snapshot_name_prefix\u0027,"},{"line_number":68,"context_line":"               default\u003d\u0027for_clone_\u0027,"},{"line_number":69,"context_line":"               help\u003d\u0027This prefix is used for generating names for LightOS\u0027"},{"line_number":70,"context_line":"                    \u0027 snapshots which are not backed by a cinder LightOS.\u0027),"}],"source_content_type":"text/x-python","patch_set":10,"id":"76182a60_7895b158","line":67,"range":{"start_line":67,"start_character":16,"end_line":67,"end_character":57},"updated":"2022-01-13 17:19:33.000000000","message":"?: Why do we want this to be configurable? This should be something internal to the driver, right?","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"c09c1a5d19c1baec3a2aa1066363cac9a4274ab5","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                    \u0027 snapshot names.\u0027"},{"line_number":65,"context_line":"                    \u0027 Changing this parameter will render all\u0027"},{"line_number":66,"context_line":"                    \u0027 previously defined LightOS snapshots inaccessible.\u0027),"},{"line_number":67,"context_line":"    cfg.StrOpt(\u0027lightos_intermediate_snapshot_name_prefix\u0027,"},{"line_number":68,"context_line":"               default\u003d\u0027for_clone_\u0027,"},{"line_number":69,"context_line":"               help\u003d\u0027This prefix is used for generating names for LightOS\u0027"},{"line_number":70,"context_line":"                    \u0027 snapshots which are not backed by a cinder LightOS.\u0027),"}],"source_content_type":"text/x-python","patch_set":10,"id":"d3706d5a_9de8f20a","line":67,"range":{"start_line":67,"start_character":16,"end_line":67,"end_character":57},"in_reply_to":"07046c61_58fb0799","updated":"2022-01-14 14:12:03.000000000","message":"Ack","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"8516394cadd55b34784d36232a3c61993f1886f2","unresolved":true,"context_lines":[{"line_number":64,"context_line":"                    \u0027 snapshot names.\u0027"},{"line_number":65,"context_line":"                    \u0027 Changing this parameter will render all\u0027"},{"line_number":66,"context_line":"                    \u0027 previously defined LightOS snapshots inaccessible.\u0027),"},{"line_number":67,"context_line":"    cfg.StrOpt(\u0027lightos_intermediate_snapshot_name_prefix\u0027,"},{"line_number":68,"context_line":"               default\u003d\u0027for_clone_\u0027,"},{"line_number":69,"context_line":"               help\u003d\u0027This prefix is used for generating names for LightOS\u0027"},{"line_number":70,"context_line":"                    \u0027 snapshots which are not backed by a cinder LightOS.\u0027),"}],"source_content_type":"text/x-python","patch_set":10,"id":"acd879a4_44d30f94","line":67,"range":{"start_line":67,"start_character":16,"end_line":67,"end_character":57},"in_reply_to":"76182a60_7895b158","updated":"2022-01-14 09:04:26.000000000","message":"I am not sure why it\u0027s configurable. Yuval, WDYT?","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"3d34d87a49da5c217c43628e2e10640e85be30f1","unresolved":true,"context_lines":[{"line_number":64,"context_line":"                    \u0027 snapshot names.\u0027"},{"line_number":65,"context_line":"                    \u0027 Changing this parameter will render all\u0027"},{"line_number":66,"context_line":"                    \u0027 previously defined LightOS snapshots inaccessible.\u0027),"},{"line_number":67,"context_line":"    cfg.StrOpt(\u0027lightos_intermediate_snapshot_name_prefix\u0027,"},{"line_number":68,"context_line":"               default\u003d\u0027for_clone_\u0027,"},{"line_number":69,"context_line":"               help\u003d\u0027This prefix is used for generating names for LightOS\u0027"},{"line_number":70,"context_line":"                    \u0027 snapshots which are not backed by a cinder LightOS.\u0027),"}],"source_content_type":"text/x-python","patch_set":10,"id":"07046c61_58fb0799","line":67,"range":{"start_line":67,"start_character":16,"end_line":67,"end_character":57},"in_reply_to":"acd879a4_44d30f94","updated":"2022-01-14 10:43:18.000000000","message":"when you clone a volume, an intermediate snapshot going to be create - in case the operator will want to have a custom name for it - we expose this option","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"d897ea51bc1c0f730501dc6e42b0e7c4499d4715","unresolved":true,"context_lines":[{"line_number":69,"context_line":"               help\u003d\u0027This prefix is used for generating names for LightOS\u0027"},{"line_number":70,"context_line":"                    \u0027 snapshots which are not backed by a cinder LightOS.\u0027),"},{"line_number":71,"context_line":"    cfg.IntOpt(\u0027lightos_default_num_replicas\u0027,"},{"line_number":72,"context_line":"               default\u003d3,"},{"line_number":73,"context_line":"               help\u003d\u0027The default number of replicas to create for each\u0027"},{"line_number":74,"context_line":"                    \u0027volume. Valid values are 1, 2 and 3.\u0027),"},{"line_number":75,"context_line":"    cfg.BoolOpt(\u0027lightos_default_compression_enabled\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"a15d49e0_f9f965b3","line":72,"updated":"2022-01-13 17:19:33.000000000","message":"-1: Since we only support a range of values we should make Oslo config do the checking so the driver doesn\u0027t have to do it.\n\n    cfg.IntOpt(\u0027lightos_default_num_replicas\u0027,\n               min\u003d1, max\u003d3, default\u003d3,\n               help\u003d\u0027The default number of replicas to create for each\u0027\n                    \u0027volume. Valid values are 1, 2 and 3.\u0027),","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"3d34d87a49da5c217c43628e2e10640e85be30f1","unresolved":false,"context_lines":[{"line_number":69,"context_line":"               help\u003d\u0027This prefix is used for generating names for LightOS\u0027"},{"line_number":70,"context_line":"                    \u0027 snapshots which are not backed by a cinder LightOS.\u0027),"},{"line_number":71,"context_line":"    cfg.IntOpt(\u0027lightos_default_num_replicas\u0027,"},{"line_number":72,"context_line":"               default\u003d3,"},{"line_number":73,"context_line":"               help\u003d\u0027The default number of replicas to create for each\u0027"},{"line_number":74,"context_line":"                    \u0027volume. Valid values are 1, 2 and 3.\u0027),"},{"line_number":75,"context_line":"    cfg.BoolOpt(\u0027lightos_default_compression_enabled\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"dd536268_14625bc7","line":72,"in_reply_to":"0101e9dd_b317ae14","updated":"2022-01-14 10:43:18.000000000","message":"Ack","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"8516394cadd55b34784d36232a3c61993f1886f2","unresolved":true,"context_lines":[{"line_number":69,"context_line":"               help\u003d\u0027This prefix is used for generating names for LightOS\u0027"},{"line_number":70,"context_line":"                    \u0027 snapshots which are not backed by a cinder LightOS.\u0027),"},{"line_number":71,"context_line":"    cfg.IntOpt(\u0027lightos_default_num_replicas\u0027,"},{"line_number":72,"context_line":"               default\u003d3,"},{"line_number":73,"context_line":"               help\u003d\u0027The default number of replicas to create for each\u0027"},{"line_number":74,"context_line":"                    \u0027volume. Valid values are 1, 2 and 3.\u0027),"},{"line_number":75,"context_line":"    cfg.BoolOpt(\u0027lightos_default_compression_enabled\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"0101e9dd_b317ae14","line":72,"in_reply_to":"a15d49e0_f9f965b3","updated":"2022-01-14 09:04:26.000000000","message":"Thanks, we\u0027ll fix.","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"d897ea51bc1c0f730501dc6e42b0e7c4499d4715","unresolved":true,"context_lines":[{"line_number":82,"context_line":"]"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"CONF \u003d cfg.CONF"},{"line_number":85,"context_line":"CONF.register_opts(lightos_opts)"},{"line_number":86,"context_line":"BLOCK_SIZE \u003d 8"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"923fce8a_7afd2a74","line":85,"updated":"2022-01-13 17:19:33.000000000","message":"-1: Needs to be added to the SHARED_CONF_GROUP\n\n  from cinder.volume import configuration\n\n  CONF.register_opts(lightos_opts, group\u003dconfiguration.SHARED_CONF_GROUP)","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"3d34d87a49da5c217c43628e2e10640e85be30f1","unresolved":false,"context_lines":[{"line_number":82,"context_line":"]"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"CONF \u003d cfg.CONF"},{"line_number":85,"context_line":"CONF.register_opts(lightos_opts)"},{"line_number":86,"context_line":"BLOCK_SIZE \u003d 8"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"7f1bcf99_fff9ef49","line":85,"in_reply_to":"1a65a6b0_49a7b738","updated":"2022-01-14 10:43:18.000000000","message":"Ack","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"8516394cadd55b34784d36232a3c61993f1886f2","unresolved":true,"context_lines":[{"line_number":82,"context_line":"]"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"CONF \u003d cfg.CONF"},{"line_number":85,"context_line":"CONF.register_opts(lightos_opts)"},{"line_number":86,"context_line":"BLOCK_SIZE \u003d 8"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1a65a6b0_49a7b738","line":85,"in_reply_to":"923fce8a_7afd2a74","updated":"2022-01-14 09:04:26.000000000","message":"Ack, we\u0027ll fix.","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"d897ea51bc1c0f730501dc6e42b0e7c4499d4715","unresolved":true,"context_lines":[{"line_number":336,"context_line":""},{"line_number":337,"context_line":""},{"line_number":338,"context_line":"@interface.volumedriver"},{"line_number":339,"context_line":"class LightOSVolumeDriver(driver.VolumeDriver):"},{"line_number":340,"context_line":"    VERSION \u003d \u00272.3.12\u0027"},{"line_number":341,"context_line":"    # ThirdPartySystems wiki page"},{"line_number":342,"context_line":"    CI_WIKI_NAME \u003d \"LightbitsLabs_CI\""}],"source_content_type":"text/x-python","patch_set":10,"id":"0b3eca49_645b034e","line":339,"updated":"2022-01-13 17:19:33.000000000","message":"-1: Driver is missing the \u0027get_driver_options\u0027 method.","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"8516394cadd55b34784d36232a3c61993f1886f2","unresolved":true,"context_lines":[{"line_number":336,"context_line":""},{"line_number":337,"context_line":""},{"line_number":338,"context_line":"@interface.volumedriver"},{"line_number":339,"context_line":"class LightOSVolumeDriver(driver.VolumeDriver):"},{"line_number":340,"context_line":"    VERSION \u003d \u00272.3.12\u0027"},{"line_number":341,"context_line":"    # ThirdPartySystems wiki page"},{"line_number":342,"context_line":"    CI_WIKI_NAME \u003d \"LightbitsLabs_CI\""}],"source_content_type":"text/x-python","patch_set":10,"id":"9a9776bd_1048c69f","line":339,"in_reply_to":"0b3eca49_645b034e","updated":"2022-01-14 09:04:26.000000000","message":"Thanks, we\u0027ll add it.","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"3d34d87a49da5c217c43628e2e10640e85be30f1","unresolved":false,"context_lines":[{"line_number":336,"context_line":""},{"line_number":337,"context_line":""},{"line_number":338,"context_line":"@interface.volumedriver"},{"line_number":339,"context_line":"class LightOSVolumeDriver(driver.VolumeDriver):"},{"line_number":340,"context_line":"    VERSION \u003d \u00272.3.12\u0027"},{"line_number":341,"context_line":"    # ThirdPartySystems wiki page"},{"line_number":342,"context_line":"    CI_WIKI_NAME \u003d \"LightbitsLabs_CI\""}],"source_content_type":"text/x-python","patch_set":10,"id":"a63abf6a_c978d769","line":339,"in_reply_to":"9a9776bd_1048c69f","updated":"2022-01-14 10:43:18.000000000","message":"Ack","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"748f742f36e40cdc9f44255dc5aa2f237e3435df","unresolved":true,"context_lines":[{"line_number":419,"context_line":"        \"\"\""},{"line_number":420,"context_line":"        pass"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"    def connect_volume(self, volume):"},{"line_number":423,"context_line":"        \"\"\"Connect the local node to a volume and return its local path\"\"\""},{"line_number":424,"context_line":"        hostnqn \u003d self.connector.get_hostnqn()"},{"line_number":425,"context_line":"        found_dsc \u003d self.connector.find_dsc()"},{"line_number":426,"context_line":"        LOG.debug("},{"line_number":427,"context_line":"            \u0027connect_volume: local hostnqn is %s found_dsc %s\u0027,"},{"line_number":428,"context_line":"            hostnqn,"},{"line_number":429,"context_line":"            found_dsc)"},{"line_number":430,"context_line":"        if not hostnqn:"},{"line_number":431,"context_line":"            msg \u003d \u0027Local connector did not return a hostnqn, aborting\u0027"},{"line_number":432,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"        if not found_dsc:"},{"line_number":435,"context_line":"            LOG.warn("},{"line_number":436,"context_line":"                \u0027LIGHTOS: did not find a discovery client, continuing anyway\u0027)"},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"        lightos_volname \u003d self._lightos_volname(volume)"},{"line_number":439,"context_line":"        project_name \u003d self._get_lightos_project_name(volume[\"volume_type_id\"])"},{"line_number":440,"context_line":"        success \u003d self.add_volume_acl(project_name, volume, hostnqn)"},{"line_number":441,"context_line":"        if not success or not self._wait_for_volume_acl("},{"line_number":442,"context_line":"                project_name, lightos_volname, hostnqn, True):"},{"line_number":443,"context_line":"            msg \u003d (\u0027Could not add ACL for hostnqn %s LightOS volume\u0027"},{"line_number":444,"context_line":"                   \u0027%s, aborting\u0027 % (hostnqn, lightos_volname))"},{"line_number":445,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"        connection_properties \u003d self._get_connection_properties("},{"line_number":448,"context_line":"            project_name, volume)"},{"line_number":449,"context_line":"        device_info \u003d self.connector.connect_volume(connection_properties)"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"        return device_info[\u0027path\u0027]"},{"line_number":452,"context_line":""},{"line_number":453,"context_line":"    def disconnect_volume(self, volume):"},{"line_number":454,"context_line":"        \"\"\"Disconnect the local node from a volume\"\"\""},{"line_number":455,"context_line":"        hostnqn \u003d self.connector.get_hostnqn()"},{"line_number":456,"context_line":"        LOG.debug(\u0027disconnect_volume: local hostnqn is %s\u0027, hostnqn)"},{"line_number":457,"context_line":"        if not hostnqn:"},{"line_number":458,"context_line":"            msg \u003d \u0027Local connector did not return a hostnqn, aborting\u0027"},{"line_number":459,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":460,"context_line":""},{"line_number":461,"context_line":"        lightos_volname \u003d self._lightos_volname(volume)"},{"line_number":462,"context_line":"        project_name \u003d self._get_lightos_project_name("},{"line_number":463,"context_line":"            volume[\"volume_type_id\"])"},{"line_number":464,"context_line":"        success \u003d self.remove_volume_acl(project_name, volume, hostnqn)"},{"line_number":465,"context_line":"        if not success or not self._wait_for_volume_acl("},{"line_number":466,"context_line":"                project_name, lightos_volname, hostnqn, False):"},{"line_number":467,"context_line":"            LOG.warn("},{"line_number":468,"context_line":"                \u0027Could not remove ACL for hostnqn \\"},{"line_number":469,"context_line":"                 %s LightOS volume %s, limping along\u0027,"},{"line_number":470,"context_line":"                hostnqn,"},{"line_number":471,"context_line":"                lightos_volname)"},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"        connection_properties \u003d self._get_connection_properties("},{"line_number":474,"context_line":"            project_name, volume)"},{"line_number":475,"context_line":"        self.connector.disconnect_volume(connection_properties, volume)"},{"line_number":476,"context_line":""},{"line_number":477,"context_line":"    def copy_image_to_volume(self, context, volume, image_service, image_id):"},{"line_number":478,"context_line":"        \"\"\"Fetch the image from image_service and write it to the volume.\"\"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"b18741ed_9bcb47a8","line":475,"range":{"start_line":422,"start_character":0,"end_line":475,"end_character":71},"updated":"2022-01-13 14:50:13.000000000","message":"these methods should be in os-brick as nova already calls connect_volume and disconnect_volume in os-brick after the connection with cinder is complete.","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"8516394cadd55b34784d36232a3c61993f1886f2","unresolved":true,"context_lines":[{"line_number":419,"context_line":"        \"\"\""},{"line_number":420,"context_line":"        pass"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"    def connect_volume(self, volume):"},{"line_number":423,"context_line":"        \"\"\"Connect the local node to a volume and return its local path\"\"\""},{"line_number":424,"context_line":"        hostnqn \u003d self.connector.get_hostnqn()"},{"line_number":425,"context_line":"        found_dsc \u003d self.connector.find_dsc()"},{"line_number":426,"context_line":"        LOG.debug("},{"line_number":427,"context_line":"            \u0027connect_volume: local hostnqn is %s found_dsc %s\u0027,"},{"line_number":428,"context_line":"            hostnqn,"},{"line_number":429,"context_line":"            found_dsc)"},{"line_number":430,"context_line":"        if not hostnqn:"},{"line_number":431,"context_line":"            msg \u003d \u0027Local connector did not return a hostnqn, aborting\u0027"},{"line_number":432,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"        if not found_dsc:"},{"line_number":435,"context_line":"            LOG.warn("},{"line_number":436,"context_line":"                \u0027LIGHTOS: did not find a discovery client, continuing anyway\u0027)"},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"        lightos_volname \u003d self._lightos_volname(volume)"},{"line_number":439,"context_line":"        project_name \u003d self._get_lightos_project_name(volume[\"volume_type_id\"])"},{"line_number":440,"context_line":"        success \u003d self.add_volume_acl(project_name, volume, hostnqn)"},{"line_number":441,"context_line":"        if not success or not self._wait_for_volume_acl("},{"line_number":442,"context_line":"                project_name, lightos_volname, hostnqn, True):"},{"line_number":443,"context_line":"            msg \u003d (\u0027Could not add ACL for hostnqn %s LightOS volume\u0027"},{"line_number":444,"context_line":"                   \u0027%s, aborting\u0027 % (hostnqn, lightos_volname))"},{"line_number":445,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"        connection_properties \u003d self._get_connection_properties("},{"line_number":448,"context_line":"            project_name, volume)"},{"line_number":449,"context_line":"        device_info \u003d self.connector.connect_volume(connection_properties)"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"        return device_info[\u0027path\u0027]"},{"line_number":452,"context_line":""},{"line_number":453,"context_line":"    def disconnect_volume(self, volume):"},{"line_number":454,"context_line":"        \"\"\"Disconnect the local node from a volume\"\"\""},{"line_number":455,"context_line":"        hostnqn \u003d self.connector.get_hostnqn()"},{"line_number":456,"context_line":"        LOG.debug(\u0027disconnect_volume: local hostnqn is %s\u0027, hostnqn)"},{"line_number":457,"context_line":"        if not hostnqn:"},{"line_number":458,"context_line":"            msg \u003d \u0027Local connector did not return a hostnqn, aborting\u0027"},{"line_number":459,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":460,"context_line":""},{"line_number":461,"context_line":"        lightos_volname \u003d self._lightos_volname(volume)"},{"line_number":462,"context_line":"        project_name \u003d self._get_lightos_project_name("},{"line_number":463,"context_line":"            volume[\"volume_type_id\"])"},{"line_number":464,"context_line":"        success \u003d self.remove_volume_acl(project_name, volume, hostnqn)"},{"line_number":465,"context_line":"        if not success or not self._wait_for_volume_acl("},{"line_number":466,"context_line":"                project_name, lightos_volname, hostnqn, False):"},{"line_number":467,"context_line":"            LOG.warn("},{"line_number":468,"context_line":"                \u0027Could not remove ACL for hostnqn \\"},{"line_number":469,"context_line":"                 %s LightOS volume %s, limping along\u0027,"},{"line_number":470,"context_line":"                hostnqn,"},{"line_number":471,"context_line":"                lightos_volname)"},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"        connection_properties \u003d self._get_connection_properties("},{"line_number":474,"context_line":"            project_name, volume)"},{"line_number":475,"context_line":"        self.connector.disconnect_volume(connection_properties, volume)"},{"line_number":476,"context_line":""},{"line_number":477,"context_line":"    def copy_image_to_volume(self, context, volume, image_service, image_id):"},{"line_number":478,"context_line":"        \"\"\"Fetch the image from image_service and write it to the volume.\"\"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"9b19b311_4a5109cc","line":475,"range":{"start_line":422,"start_character":0,"end_line":475,"end_character":71},"in_reply_to":"8bc885b3_3b0eb8a4","updated":"2022-01-14 09:04:26.000000000","message":"Thank you both. If I understand correctly, you\u0027re saying two things: (1) that our implementation of copy_image_to_volume() and to volume_to_image() should be removed because the parent class already does it. That seems straightforward enough, we\u0027ll test it and if it works we\u0027ll do it. (2) that our connect_volume/disconnect_volume() should be moved to os_brick. That I disagree with. As you can see, these calls are making both API calls to LightOS (e.g., to update volume ACL) and call the connector to connect. Currently the os_brick connector is data-plane only and has no concept of LightOS API calls. We think it\u0027s cleaner to have Cinder make the API calls and orchestrate the connection and keep the connector data-plane only.","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"c09c1a5d19c1baec3a2aa1066363cac9a4274ab5","unresolved":false,"context_lines":[{"line_number":419,"context_line":"        \"\"\""},{"line_number":420,"context_line":"        pass"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"    def connect_volume(self, volume):"},{"line_number":423,"context_line":"        \"\"\"Connect the local node to a volume and return its local path\"\"\""},{"line_number":424,"context_line":"        hostnqn \u003d self.connector.get_hostnqn()"},{"line_number":425,"context_line":"        found_dsc \u003d self.connector.find_dsc()"},{"line_number":426,"context_line":"        LOG.debug("},{"line_number":427,"context_line":"            \u0027connect_volume: local hostnqn is %s found_dsc %s\u0027,"},{"line_number":428,"context_line":"            hostnqn,"},{"line_number":429,"context_line":"            found_dsc)"},{"line_number":430,"context_line":"        if not hostnqn:"},{"line_number":431,"context_line":"            msg \u003d \u0027Local connector did not return a hostnqn, aborting\u0027"},{"line_number":432,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"        if not found_dsc:"},{"line_number":435,"context_line":"            LOG.warn("},{"line_number":436,"context_line":"                \u0027LIGHTOS: did not find a discovery client, continuing anyway\u0027)"},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"        lightos_volname \u003d self._lightos_volname(volume)"},{"line_number":439,"context_line":"        project_name \u003d self._get_lightos_project_name(volume[\"volume_type_id\"])"},{"line_number":440,"context_line":"        success \u003d self.add_volume_acl(project_name, volume, hostnqn)"},{"line_number":441,"context_line":"        if not success or not self._wait_for_volume_acl("},{"line_number":442,"context_line":"                project_name, lightos_volname, hostnqn, True):"},{"line_number":443,"context_line":"            msg \u003d (\u0027Could not add ACL for hostnqn %s LightOS volume\u0027"},{"line_number":444,"context_line":"                   \u0027%s, aborting\u0027 % (hostnqn, lightos_volname))"},{"line_number":445,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"        connection_properties \u003d self._get_connection_properties("},{"line_number":448,"context_line":"            project_name, volume)"},{"line_number":449,"context_line":"        device_info \u003d self.connector.connect_volume(connection_properties)"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"        return device_info[\u0027path\u0027]"},{"line_number":452,"context_line":""},{"line_number":453,"context_line":"    def disconnect_volume(self, volume):"},{"line_number":454,"context_line":"        \"\"\"Disconnect the local node from a volume\"\"\""},{"line_number":455,"context_line":"        hostnqn \u003d self.connector.get_hostnqn()"},{"line_number":456,"context_line":"        LOG.debug(\u0027disconnect_volume: local hostnqn is %s\u0027, hostnqn)"},{"line_number":457,"context_line":"        if not hostnqn:"},{"line_number":458,"context_line":"            msg \u003d \u0027Local connector did not return a hostnqn, aborting\u0027"},{"line_number":459,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":460,"context_line":""},{"line_number":461,"context_line":"        lightos_volname \u003d self._lightos_volname(volume)"},{"line_number":462,"context_line":"        project_name \u003d self._get_lightos_project_name("},{"line_number":463,"context_line":"            volume[\"volume_type_id\"])"},{"line_number":464,"context_line":"        success \u003d self.remove_volume_acl(project_name, volume, hostnqn)"},{"line_number":465,"context_line":"        if not success or not self._wait_for_volume_acl("},{"line_number":466,"context_line":"                project_name, lightos_volname, hostnqn, False):"},{"line_number":467,"context_line":"            LOG.warn("},{"line_number":468,"context_line":"                \u0027Could not remove ACL for hostnqn \\"},{"line_number":469,"context_line":"                 %s LightOS volume %s, limping along\u0027,"},{"line_number":470,"context_line":"                hostnqn,"},{"line_number":471,"context_line":"                lightos_volname)"},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"        connection_properties \u003d self._get_connection_properties("},{"line_number":474,"context_line":"            project_name, volume)"},{"line_number":475,"context_line":"        self.connector.disconnect_volume(connection_properties, volume)"},{"line_number":476,"context_line":""},{"line_number":477,"context_line":"    def copy_image_to_volume(self, context, volume, image_service, image_id):"},{"line_number":478,"context_line":"        \"\"\"Fetch the image from image_service and write it to the volume.\"\"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"5cc44468_d0501832","line":475,"range":{"start_line":422,"start_character":0,"end_line":475,"end_character":71},"in_reply_to":"9031d13c_b7dd4e3c","updated":"2022-01-14 14:12:03.000000000","message":"We verified this is indeed not needed, we removed the code.","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"24cdfd9493cfd54f1ea1ab459d9ce45ac775acb5","unresolved":true,"context_lines":[{"line_number":419,"context_line":"        \"\"\""},{"line_number":420,"context_line":"        pass"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"    def connect_volume(self, volume):"},{"line_number":423,"context_line":"        \"\"\"Connect the local node to a volume and return its local path\"\"\""},{"line_number":424,"context_line":"        hostnqn \u003d self.connector.get_hostnqn()"},{"line_number":425,"context_line":"        found_dsc \u003d self.connector.find_dsc()"},{"line_number":426,"context_line":"        LOG.debug("},{"line_number":427,"context_line":"            \u0027connect_volume: local hostnqn is %s found_dsc %s\u0027,"},{"line_number":428,"context_line":"            hostnqn,"},{"line_number":429,"context_line":"            found_dsc)"},{"line_number":430,"context_line":"        if not hostnqn:"},{"line_number":431,"context_line":"            msg \u003d \u0027Local connector did not return a hostnqn, aborting\u0027"},{"line_number":432,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"        if not found_dsc:"},{"line_number":435,"context_line":"            LOG.warn("},{"line_number":436,"context_line":"                \u0027LIGHTOS: did not find a discovery client, continuing anyway\u0027)"},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"        lightos_volname \u003d self._lightos_volname(volume)"},{"line_number":439,"context_line":"        project_name \u003d self._get_lightos_project_name(volume[\"volume_type_id\"])"},{"line_number":440,"context_line":"        success \u003d self.add_volume_acl(project_name, volume, hostnqn)"},{"line_number":441,"context_line":"        if not success or not self._wait_for_volume_acl("},{"line_number":442,"context_line":"                project_name, lightos_volname, hostnqn, True):"},{"line_number":443,"context_line":"            msg \u003d (\u0027Could not add ACL for hostnqn %s LightOS volume\u0027"},{"line_number":444,"context_line":"                   \u0027%s, aborting\u0027 % (hostnqn, lightos_volname))"},{"line_number":445,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"        connection_properties \u003d self._get_connection_properties("},{"line_number":448,"context_line":"            project_name, volume)"},{"line_number":449,"context_line":"        device_info \u003d self.connector.connect_volume(connection_properties)"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"        return device_info[\u0027path\u0027]"},{"line_number":452,"context_line":""},{"line_number":453,"context_line":"    def disconnect_volume(self, volume):"},{"line_number":454,"context_line":"        \"\"\"Disconnect the local node from a volume\"\"\""},{"line_number":455,"context_line":"        hostnqn \u003d self.connector.get_hostnqn()"},{"line_number":456,"context_line":"        LOG.debug(\u0027disconnect_volume: local hostnqn is %s\u0027, hostnqn)"},{"line_number":457,"context_line":"        if not hostnqn:"},{"line_number":458,"context_line":"            msg \u003d \u0027Local connector did not return a hostnqn, aborting\u0027"},{"line_number":459,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":460,"context_line":""},{"line_number":461,"context_line":"        lightos_volname \u003d self._lightos_volname(volume)"},{"line_number":462,"context_line":"        project_name \u003d self._get_lightos_project_name("},{"line_number":463,"context_line":"            volume[\"volume_type_id\"])"},{"line_number":464,"context_line":"        success \u003d self.remove_volume_acl(project_name, volume, hostnqn)"},{"line_number":465,"context_line":"        if not success or not self._wait_for_volume_acl("},{"line_number":466,"context_line":"                project_name, lightos_volname, hostnqn, False):"},{"line_number":467,"context_line":"            LOG.warn("},{"line_number":468,"context_line":"                \u0027Could not remove ACL for hostnqn \\"},{"line_number":469,"context_line":"                 %s LightOS volume %s, limping along\u0027,"},{"line_number":470,"context_line":"                hostnqn,"},{"line_number":471,"context_line":"                lightos_volname)"},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"        connection_properties \u003d self._get_connection_properties("},{"line_number":474,"context_line":"            project_name, volume)"},{"line_number":475,"context_line":"        self.connector.disconnect_volume(connection_properties, volume)"},{"line_number":476,"context_line":""},{"line_number":477,"context_line":"    def copy_image_to_volume(self, context, volume, image_service, image_id):"},{"line_number":478,"context_line":"        \"\"\"Fetch the image from image_service and write it to the volume.\"\"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"9031d13c_b7dd4e3c","line":475,"range":{"start_line":422,"start_character":0,"end_line":475,"end_character":71},"in_reply_to":"9b19b311_4a5109cc","updated":"2022-01-14 09:14:16.000000000","message":"After looking at it again and discussing Yuval, the issue here is indeed whether the base flow will call the Cinder driver to update the ACL or not. If not, we need connect/disconnect here to update the ACL. If it does, then this is indeed redundant and we can remove it. We\u0027ll look into it.","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"d897ea51bc1c0f730501dc6e42b0e7c4499d4715","unresolved":true,"context_lines":[{"line_number":419,"context_line":"        \"\"\""},{"line_number":420,"context_line":"        pass"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"    def connect_volume(self, volume):"},{"line_number":423,"context_line":"        \"\"\"Connect the local node to a volume and return its local path\"\"\""},{"line_number":424,"context_line":"        hostnqn \u003d self.connector.get_hostnqn()"},{"line_number":425,"context_line":"        found_dsc \u003d self.connector.find_dsc()"},{"line_number":426,"context_line":"        LOG.debug("},{"line_number":427,"context_line":"            \u0027connect_volume: local hostnqn is %s found_dsc %s\u0027,"},{"line_number":428,"context_line":"            hostnqn,"},{"line_number":429,"context_line":"            found_dsc)"},{"line_number":430,"context_line":"        if not hostnqn:"},{"line_number":431,"context_line":"            msg \u003d \u0027Local connector did not return a hostnqn, aborting\u0027"},{"line_number":432,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"        if not found_dsc:"},{"line_number":435,"context_line":"            LOG.warn("},{"line_number":436,"context_line":"                \u0027LIGHTOS: did not find a discovery client, continuing anyway\u0027)"},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"        lightos_volname \u003d self._lightos_volname(volume)"},{"line_number":439,"context_line":"        project_name \u003d self._get_lightos_project_name(volume[\"volume_type_id\"])"},{"line_number":440,"context_line":"        success \u003d self.add_volume_acl(project_name, volume, hostnqn)"},{"line_number":441,"context_line":"        if not success or not self._wait_for_volume_acl("},{"line_number":442,"context_line":"                project_name, lightos_volname, hostnqn, True):"},{"line_number":443,"context_line":"            msg \u003d (\u0027Could not add ACL for hostnqn %s LightOS volume\u0027"},{"line_number":444,"context_line":"                   \u0027%s, aborting\u0027 % (hostnqn, lightos_volname))"},{"line_number":445,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"        connection_properties \u003d self._get_connection_properties("},{"line_number":448,"context_line":"            project_name, volume)"},{"line_number":449,"context_line":"        device_info \u003d self.connector.connect_volume(connection_properties)"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"        return device_info[\u0027path\u0027]"},{"line_number":452,"context_line":""},{"line_number":453,"context_line":"    def disconnect_volume(self, volume):"},{"line_number":454,"context_line":"        \"\"\"Disconnect the local node from a volume\"\"\""},{"line_number":455,"context_line":"        hostnqn \u003d self.connector.get_hostnqn()"},{"line_number":456,"context_line":"        LOG.debug(\u0027disconnect_volume: local hostnqn is %s\u0027, hostnqn)"},{"line_number":457,"context_line":"        if not hostnqn:"},{"line_number":458,"context_line":"            msg \u003d \u0027Local connector did not return a hostnqn, aborting\u0027"},{"line_number":459,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":460,"context_line":""},{"line_number":461,"context_line":"        lightos_volname \u003d self._lightos_volname(volume)"},{"line_number":462,"context_line":"        project_name \u003d self._get_lightos_project_name("},{"line_number":463,"context_line":"            volume[\"volume_type_id\"])"},{"line_number":464,"context_line":"        success \u003d self.remove_volume_acl(project_name, volume, hostnqn)"},{"line_number":465,"context_line":"        if not success or not self._wait_for_volume_acl("},{"line_number":466,"context_line":"                project_name, lightos_volname, hostnqn, False):"},{"line_number":467,"context_line":"            LOG.warn("},{"line_number":468,"context_line":"                \u0027Could not remove ACL for hostnqn \\"},{"line_number":469,"context_line":"                 %s LightOS volume %s, limping along\u0027,"},{"line_number":470,"context_line":"                hostnqn,"},{"line_number":471,"context_line":"                lightos_volname)"},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"        connection_properties \u003d self._get_connection_properties("},{"line_number":474,"context_line":"            project_name, volume)"},{"line_number":475,"context_line":"        self.connector.disconnect_volume(connection_properties, volume)"},{"line_number":476,"context_line":""},{"line_number":477,"context_line":"    def copy_image_to_volume(self, context, volume, image_service, image_id):"},{"line_number":478,"context_line":"        \"\"\"Fetch the image from image_service and write it to the volume.\"\"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"8bc885b3_3b0eb8a4","line":475,"range":{"start_line":422,"start_character":0,"end_line":475,"end_character":71},"in_reply_to":"b18741ed_9bcb47a8","updated":"2022-01-13 17:19:33.000000000","message":"-1: I agree, the driver should be using the parent\u0027s \"copy_image_to_volume\" and \"copy_volume_to_image\" methods and remove these methods from here.","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"d897ea51bc1c0f730501dc6e42b0e7c4499d4715","unresolved":true,"context_lines":[{"line_number":474,"context_line":"            project_name, volume)"},{"line_number":475,"context_line":"        self.connector.disconnect_volume(connection_properties, volume)"},{"line_number":476,"context_line":""},{"line_number":477,"context_line":"    def copy_image_to_volume(self, context, volume, image_service, image_id):"},{"line_number":478,"context_line":"        \"\"\"Fetch the image from image_service and write it to the volume.\"\"\""},{"line_number":479,"context_line":"        LOG.debug("},{"line_number":480,"context_line":"            \"LightOS copy_image_to_volume volume: %(vol)s image service: \""},{"line_number":481,"context_line":"            \"%(service)s image id: %(id)s.\", {"},{"line_number":482,"context_line":"                \u0027vol\u0027: volume, \u0027service\u0027: str(image_service),"},{"line_number":483,"context_line":"                \u0027id\u0027: str(image_id)})"},{"line_number":484,"context_line":""},{"line_number":485,"context_line":"        try:"},{"line_number":486,"context_line":"            image_utils.fetch_to_raw(context,"},{"line_number":487,"context_line":"                                     image_service,"},{"line_number":488,"context_line":"                                     image_id,"},{"line_number":489,"context_line":"                                     self.connect_volume(volume),"},{"line_number":490,"context_line":"                                     BLOCK_SIZE,"},{"line_number":491,"context_line":"                                     size\u003dvolume[\u0027size\u0027])"},{"line_number":492,"context_line":""},{"line_number":493,"context_line":"        finally:"},{"line_number":494,"context_line":"            self.disconnect_volume(volume)"},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"    def copy_volume_to_image(self, context, volume, image_service, image_meta):"},{"line_number":497,"context_line":"        \"\"\"Copy the volume to the specified image.\"\"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"2d935810_66f94de6","line":494,"range":{"start_line":477,"start_character":0,"end_line":494,"end_character":42},"updated":"2022-01-13 17:19:33.000000000","message":"-1: This seems like a more limited version of the parent class\u0027 \"copy_image_to_volume\" [1], as it doesn\u0027t support encryption, multipathing, etc.\n\n[1]: https://opendev.org/openstack/cinder/src/branch/master/cinder/volume/driver.py#L858-L864","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"8516394cadd55b34784d36232a3c61993f1886f2","unresolved":true,"context_lines":[{"line_number":474,"context_line":"            project_name, volume)"},{"line_number":475,"context_line":"        self.connector.disconnect_volume(connection_properties, volume)"},{"line_number":476,"context_line":""},{"line_number":477,"context_line":"    def copy_image_to_volume(self, context, volume, image_service, image_id):"},{"line_number":478,"context_line":"        \"\"\"Fetch the image from image_service and write it to the volume.\"\"\""},{"line_number":479,"context_line":"        LOG.debug("},{"line_number":480,"context_line":"            \"LightOS copy_image_to_volume volume: %(vol)s image service: \""},{"line_number":481,"context_line":"            \"%(service)s image id: %(id)s.\", {"},{"line_number":482,"context_line":"                \u0027vol\u0027: volume, \u0027service\u0027: str(image_service),"},{"line_number":483,"context_line":"                \u0027id\u0027: str(image_id)})"},{"line_number":484,"context_line":""},{"line_number":485,"context_line":"        try:"},{"line_number":486,"context_line":"            image_utils.fetch_to_raw(context,"},{"line_number":487,"context_line":"                                     image_service,"},{"line_number":488,"context_line":"                                     image_id,"},{"line_number":489,"context_line":"                                     self.connect_volume(volume),"},{"line_number":490,"context_line":"                                     BLOCK_SIZE,"},{"line_number":491,"context_line":"                                     size\u003dvolume[\u0027size\u0027])"},{"line_number":492,"context_line":""},{"line_number":493,"context_line":"        finally:"},{"line_number":494,"context_line":"            self.disconnect_volume(volume)"},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"    def copy_volume_to_image(self, context, volume, image_service, image_meta):"},{"line_number":497,"context_line":"        \"\"\"Copy the volume to the specified image.\"\"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"70aa92b3_533b8b61","line":494,"range":{"start_line":477,"start_character":0,"end_line":494,"end_character":42},"in_reply_to":"2d935810_66f94de6","updated":"2022-01-14 09:04:26.000000000","message":"Thanks, we\u0027ll test and if superflous we\u0027ll remove.","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"c09c1a5d19c1baec3a2aa1066363cac9a4274ab5","unresolved":false,"context_lines":[{"line_number":474,"context_line":"            project_name, volume)"},{"line_number":475,"context_line":"        self.connector.disconnect_volume(connection_properties, volume)"},{"line_number":476,"context_line":""},{"line_number":477,"context_line":"    def copy_image_to_volume(self, context, volume, image_service, image_id):"},{"line_number":478,"context_line":"        \"\"\"Fetch the image from image_service and write it to the volume.\"\"\""},{"line_number":479,"context_line":"        LOG.debug("},{"line_number":480,"context_line":"            \"LightOS copy_image_to_volume volume: %(vol)s image service: \""},{"line_number":481,"context_line":"            \"%(service)s image id: %(id)s.\", {"},{"line_number":482,"context_line":"                \u0027vol\u0027: volume, \u0027service\u0027: str(image_service),"},{"line_number":483,"context_line":"                \u0027id\u0027: str(image_id)})"},{"line_number":484,"context_line":""},{"line_number":485,"context_line":"        try:"},{"line_number":486,"context_line":"            image_utils.fetch_to_raw(context,"},{"line_number":487,"context_line":"                                     image_service,"},{"line_number":488,"context_line":"                                     image_id,"},{"line_number":489,"context_line":"                                     self.connect_volume(volume),"},{"line_number":490,"context_line":"                                     BLOCK_SIZE,"},{"line_number":491,"context_line":"                                     size\u003dvolume[\u0027size\u0027])"},{"line_number":492,"context_line":""},{"line_number":493,"context_line":"        finally:"},{"line_number":494,"context_line":"            self.disconnect_volume(volume)"},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"    def copy_volume_to_image(self, context, volume, image_service, image_meta):"},{"line_number":497,"context_line":"        \"\"\"Copy the volume to the specified image.\"\"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"47e5b66e_29e9bcf2","line":494,"range":{"start_line":477,"start_character":0,"end_line":494,"end_character":42},"in_reply_to":"70aa92b3_533b8b61","updated":"2022-01-14 14:12:03.000000000","message":"removed","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"d897ea51bc1c0f730501dc6e42b0e7c4499d4715","unresolved":true,"context_lines":[{"line_number":492,"context_line":""},{"line_number":493,"context_line":"        finally:"},{"line_number":494,"context_line":"            self.disconnect_volume(volume)"},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"    def copy_volume_to_image(self, context, volume, image_service, image_meta):"},{"line_number":497,"context_line":"        \"\"\"Copy the volume to the specified image.\"\"\""},{"line_number":498,"context_line":"        LOG.debug("},{"line_number":499,"context_line":"            \"LightOS copy_volume_to_image volume: %(vol)s image service: \""},{"line_number":500,"context_line":"            \"%(service)s image meta: %(meta)s.\", {"},{"line_number":501,"context_line":"                \u0027vol\u0027: volume, \u0027service\u0027: str(image_service),"},{"line_number":502,"context_line":"                \u0027meta\u0027: str(image_meta)})"},{"line_number":503,"context_line":"        try:"},{"line_number":504,"context_line":"            image_utils.upload_volume(context,"},{"line_number":505,"context_line":"                                      image_service,"},{"line_number":506,"context_line":"                                      image_meta,"},{"line_number":507,"context_line":"                                      self.connect_volume(volume))"},{"line_number":508,"context_line":"        finally:"},{"line_number":509,"context_line":"            self.disconnect_volume(volume)"},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"    def _get_lightos_volume("},{"line_number":512,"context_line":"            self,"}],"source_content_type":"text/x-python","patch_set":10,"id":"ca21eedd_599d457f","line":509,"range":{"start_line":495,"start_character":0,"end_line":509,"end_character":42},"updated":"2022-01-13 17:19:33.000000000","message":"-1: Same as above","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"6bf113f6b670baa3577e296e9f1a36547b90aa30","unresolved":false,"context_lines":[{"line_number":492,"context_line":""},{"line_number":493,"context_line":"        finally:"},{"line_number":494,"context_line":"            self.disconnect_volume(volume)"},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"    def copy_volume_to_image(self, context, volume, image_service, image_meta):"},{"line_number":497,"context_line":"        \"\"\"Copy the volume to the specified image.\"\"\""},{"line_number":498,"context_line":"        LOG.debug("},{"line_number":499,"context_line":"            \"LightOS copy_volume_to_image volume: %(vol)s image service: \""},{"line_number":500,"context_line":"            \"%(service)s image meta: %(meta)s.\", {"},{"line_number":501,"context_line":"                \u0027vol\u0027: volume, \u0027service\u0027: str(image_service),"},{"line_number":502,"context_line":"                \u0027meta\u0027: str(image_meta)})"},{"line_number":503,"context_line":"        try:"},{"line_number":504,"context_line":"            image_utils.upload_volume(context,"},{"line_number":505,"context_line":"                                      image_service,"},{"line_number":506,"context_line":"                                      image_meta,"},{"line_number":507,"context_line":"                                      self.connect_volume(volume))"},{"line_number":508,"context_line":"        finally:"},{"line_number":509,"context_line":"            self.disconnect_volume(volume)"},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"    def _get_lightos_volume("},{"line_number":512,"context_line":"            self,"}],"source_content_type":"text/x-python","patch_set":10,"id":"2fe9e188_2ed1e34a","line":509,"range":{"start_line":495,"start_character":0,"end_line":509,"end_character":42},"in_reply_to":"44e4933b_4594325c","updated":"2022-01-30 09:25:41.000000000","message":"Done","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"8516394cadd55b34784d36232a3c61993f1886f2","unresolved":true,"context_lines":[{"line_number":492,"context_line":""},{"line_number":493,"context_line":"        finally:"},{"line_number":494,"context_line":"            self.disconnect_volume(volume)"},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"    def copy_volume_to_image(self, context, volume, image_service, image_meta):"},{"line_number":497,"context_line":"        \"\"\"Copy the volume to the specified image.\"\"\""},{"line_number":498,"context_line":"        LOG.debug("},{"line_number":499,"context_line":"            \"LightOS copy_volume_to_image volume: %(vol)s image service: \""},{"line_number":500,"context_line":"            \"%(service)s image meta: %(meta)s.\", {"},{"line_number":501,"context_line":"                \u0027vol\u0027: volume, \u0027service\u0027: str(image_service),"},{"line_number":502,"context_line":"                \u0027meta\u0027: str(image_meta)})"},{"line_number":503,"context_line":"        try:"},{"line_number":504,"context_line":"            image_utils.upload_volume(context,"},{"line_number":505,"context_line":"                                      image_service,"},{"line_number":506,"context_line":"                                      image_meta,"},{"line_number":507,"context_line":"                                      self.connect_volume(volume))"},{"line_number":508,"context_line":"        finally:"},{"line_number":509,"context_line":"            self.disconnect_volume(volume)"},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"    def _get_lightos_volume("},{"line_number":512,"context_line":"            self,"}],"source_content_type":"text/x-python","patch_set":10,"id":"44e4933b_4594325c","line":509,"range":{"start_line":495,"start_character":0,"end_line":509,"end_character":42},"in_reply_to":"ca21eedd_599d457f","updated":"2022-01-14 09:04:26.000000000","message":"Will handle both.","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"d897ea51bc1c0f730501dc6e42b0e7c4499d4715","unresolved":true,"context_lines":[{"line_number":530,"context_line":"            volume_name\u003dvol_name)"},{"line_number":531,"context_line":""},{"line_number":532,"context_line":"    def _lightos_volname(self, volume):"},{"line_number":533,"context_line":"        volid \u003d volume[\u0027id\u0027]"},{"line_number":534,"context_line":"        lightos_volname \u003d self.configuration.volume_name_template % volid"},{"line_number":535,"context_line":"        return lightos_volname"},{"line_number":536,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"7c39916f_5954946c","line":533,"range":{"start_line":533,"start_character":8,"end_line":533,"end_character":28},"updated":"2022-01-13 17:19:33.000000000","message":"-1: This is not correct, drivers should use `volume.name_id` because the volume may have been migrated and then we wouldn\u0027t be able to find it.","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"70ffb34b807f1b0b8dfeed57b8c5b29900d942e6","unresolved":true,"context_lines":[{"line_number":530,"context_line":"            volume_name\u003dvol_name)"},{"line_number":531,"context_line":""},{"line_number":532,"context_line":"    def _lightos_volname(self, volume):"},{"line_number":533,"context_line":"        volid \u003d volume[\u0027id\u0027]"},{"line_number":534,"context_line":"        lightos_volname \u003d self.configuration.volume_name_template % volid"},{"line_number":535,"context_line":"        return lightos_volname"},{"line_number":536,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"e230db62_9a3af024","line":533,"range":{"start_line":533,"start_character":8,"end_line":533,"end_character":28},"in_reply_to":"12958ed7_0512e6af","updated":"2022-01-14 14:09:44.000000000","message":"Whether this comment should be ignored or not, there is no LightBits driver in Xena or earlier releases, so I assume you must be talking about a standalone driver.\nYou cannot use backwards compatability issues with a previous standalone driver to justify incorrect, or inappropriate code, merged upstream.","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"813a4249a456f118c5aac3dc24b6755d25b42e37","unresolved":true,"context_lines":[{"line_number":530,"context_line":"            volume_name\u003dvol_name)"},{"line_number":531,"context_line":""},{"line_number":532,"context_line":"    def _lightos_volname(self, volume):"},{"line_number":533,"context_line":"        volid \u003d volume[\u0027id\u0027]"},{"line_number":534,"context_line":"        lightos_volname \u003d self.configuration.volume_name_template % volid"},{"line_number":535,"context_line":"        return lightos_volname"},{"line_number":536,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"12958ed7_0512e6af","line":533,"range":{"start_line":533,"start_character":8,"end_line":533,"end_character":28},"in_reply_to":"59256bcb_f832f5dc","updated":"2022-01-14 12:33:51.000000000","message":"forget it I see its all the same:\n(Pdb) volume.id\n\u00272511abb3-bc7c-471e-a43f-bfcb14ef4043\u0027\n(Pdb) volume.name_id\n\u00272511abb3-bc7c-471e-a43f-bfcb14ef4043\u0027\n(Pdb) volume[\u0027id\u0027]\n\u00272511abb3-bc7c-471e-a43f-bfcb14ef4043\u0027\n\ngorka when the ID can change? on mirgation?","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"56d46bdafa56c7c200476c62aa4a07825d93e5bb","unresolved":false,"context_lines":[{"line_number":530,"context_line":"            volume_name\u003dvol_name)"},{"line_number":531,"context_line":""},{"line_number":532,"context_line":"    def _lightos_volname(self, volume):"},{"line_number":533,"context_line":"        volid \u003d volume[\u0027id\u0027]"},{"line_number":534,"context_line":"        lightos_volname \u003d self.configuration.volume_name_template % volid"},{"line_number":535,"context_line":"        return lightos_volname"},{"line_number":536,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"c5ee35c9_9ab65245","line":533,"range":{"start_line":533,"start_character":8,"end_line":533,"end_character":28},"in_reply_to":"7afc7033_ce2862ae","updated":"2022-01-17 17:59:36.000000000","message":"Sorry I didn\u0027t provide a more detailed explanation.\nVolume is a Oslo Versioned Object as defined in cinder/objects/volume.py and there you can see the definition of name_id:\n\n    @property\n    def name_id(self):\n        return self.id if not self._name_id else self._name_id\n\nThis means that it will only return \"_name_id\" if it\u0027s set and will default to \"id\" if not.\nField \"_name_id\" is set when doing a migration between different backends so the user facing \"id\" is preserved.\n\nSo we want to migrate volume with \"id\" ID1 from backend B1 to backend B2, so this is briefly what Cinder does:\n\n- creates a new empty volume in B2 of the same size (which gets \"id\" ID2)\n- copies data from volume ID1 to volume ID2\n- Call update_migrated_volume on the driver to give it the opportunity of renaming the volume from ID2 to ID1.\n  * If driver can rename it, then the \"_name_id\" field is not used\n  * If it\u0027s not renamed (driver cannot do it or the method doesn\u0027t exist), then:\n    + Cinder sets the \"_name_id\" of the ID1 volume DB record to ID2\n    + Sets the \"_name_id\" of the ID2 volume to ID1\n    + Then it deletes the volume with \"id\" ID2 (\"_name_id\" is ID1).\n\nThis way users will always see the volume as ID1, but drivers can tell that the \"id\" that was used on creation is ID2 if the volume was not renamed in the backend.","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"8516394cadd55b34784d36232a3c61993f1886f2","unresolved":true,"context_lines":[{"line_number":530,"context_line":"            volume_name\u003dvol_name)"},{"line_number":531,"context_line":""},{"line_number":532,"context_line":"    def _lightos_volname(self, volume):"},{"line_number":533,"context_line":"        volid \u003d volume[\u0027id\u0027]"},{"line_number":534,"context_line":"        lightos_volname \u003d self.configuration.volume_name_template % volid"},{"line_number":535,"context_line":"        return lightos_volname"},{"line_number":536,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"db1f6552_259b45de","line":533,"range":{"start_line":533,"start_character":8,"end_line":533,"end_character":28},"in_reply_to":"7c39916f_5954946c","updated":"2022-01-14 09:04:26.000000000","message":"THanks, we\u0027ll review all uses of id and switch to name_id where appropriate.","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"3d34d87a49da5c217c43628e2e10640e85be30f1","unresolved":true,"context_lines":[{"line_number":530,"context_line":"            volume_name\u003dvol_name)"},{"line_number":531,"context_line":""},{"line_number":532,"context_line":"    def _lightos_volname(self, volume):"},{"line_number":533,"context_line":"        volid \u003d volume[\u0027id\u0027]"},{"line_number":534,"context_line":"        lightos_volname \u003d self.configuration.volume_name_template % volid"},{"line_number":535,"context_line":"        return lightos_volname"},{"line_number":536,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"59256bcb_f832f5dc","line":533,"range":{"start_line":533,"start_character":8,"end_line":533,"end_character":28},"in_reply_to":"db1f6552_259b45de","updated":"2022-01-14 10:43:18.000000000","message":"this is a backwards breaking change - meaning if someone is already running a cluster which has volume he wont be able to upgrade to yoga.\nif we change the volume name in this way, afterwards we use the name to fetch the lightos volume (_get_lightos_volume)\nthis will fail, since the name changed.\n\nI am not saying its not possible, but need to take that into account.","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"131414efa3c1947fcc03e96745c1769ebf44a738","unresolved":false,"context_lines":[{"line_number":530,"context_line":"            volume_name\u003dvol_name)"},{"line_number":531,"context_line":""},{"line_number":532,"context_line":"    def _lightos_volname(self, volume):"},{"line_number":533,"context_line":"        volid \u003d volume[\u0027id\u0027]"},{"line_number":534,"context_line":"        lightos_volname \u003d self.configuration.volume_name_template % volid"},{"line_number":535,"context_line":"        return lightos_volname"},{"line_number":536,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"7afc7033_ce2862ae","line":533,"range":{"start_line":533,"start_character":8,"end_line":533,"end_character":28},"in_reply_to":"e230db62_9a3af024","updated":"2022-01-17 12:48:26.000000000","message":"I agree, Also the change is correct - I fixed it","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"d897ea51bc1c0f730501dc6e42b0e7c4499d4715","unresolved":true,"context_lines":[{"line_number":534,"context_line":"        lightos_volname \u003d self.configuration.volume_name_template % volid"},{"line_number":535,"context_line":"        return lightos_volname"},{"line_number":536,"context_line":""},{"line_number":537,"context_line":"    def _get_lightos_project_name(self, volume_type_id):"},{"line_number":538,"context_line":"        if volume_type_id is None:"},{"line_number":539,"context_line":"            return LIGHTOS_DEFAULT_PROJECT_NAME"},{"line_number":540,"context_line":"        extra_specs \u003d volume_types.get_volume_type_extra_specs(volume_type_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"efef4327_2380102d","line":537,"updated":"2022-01-13 17:19:33.000000000","message":"-1: Using the volume_type_id to locate the volume can be a problem, because a volume can be retyped, and then the volume_type_id would be different from the one used in the creation.","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"b39a03565f6ef7fbf6d9fe4b154d359cfe13b483","unresolved":false,"context_lines":[{"line_number":534,"context_line":"        lightos_volname \u003d self.configuration.volume_name_template % volid"},{"line_number":535,"context_line":"        return lightos_volname"},{"line_number":536,"context_line":""},{"line_number":537,"context_line":"    def _get_lightos_project_name(self, volume_type_id):"},{"line_number":538,"context_line":"        if volume_type_id is None:"},{"line_number":539,"context_line":"            return LIGHTOS_DEFAULT_PROJECT_NAME"},{"line_number":540,"context_line":"        extra_specs \u003d volume_types.get_volume_type_extra_specs(volume_type_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"36607a7e_149f8891","line":537,"in_reply_to":"efef4327_2380102d","updated":"2022-01-14 14:52:54.000000000","message":"Thanks for pointing it out but in our case we stash the LightOS project name (think of LightOS project as LightOS tenant) with the volume type. If someone retypes the volume, they should make sure that the new type has the same project name, since we don\u0027t support moving volumes between LightOS projects.","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"d897ea51bc1c0f730501dc6e42b0e7c4499d4715","unresolved":true,"context_lines":[{"line_number":535,"context_line":"        return lightos_volname"},{"line_number":536,"context_line":""},{"line_number":537,"context_line":"    def _get_lightos_project_name(self, volume_type_id):"},{"line_number":538,"context_line":"        if volume_type_id is None:"},{"line_number":539,"context_line":"            return LIGHTOS_DEFAULT_PROJECT_NAME"},{"line_number":540,"context_line":"        extra_specs \u003d volume_types.get_volume_type_extra_specs(volume_type_id)"},{"line_number":541,"context_line":"        project_name \u003d extra_specs.get("},{"line_number":542,"context_line":"            \u0027lightos:project_name\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"540b4624_72c4bab7","line":539,"range":{"start_line":538,"start_character":0,"end_line":539,"end_character":47},"updated":"2022-01-13 17:19:33.000000000","message":"-1: Current cinder code requires all volumes to have a volume type, so we know for sure that the volume will have it.","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"6bf113f6b670baa3577e296e9f1a36547b90aa30","unresolved":false,"context_lines":[{"line_number":535,"context_line":"        return lightos_volname"},{"line_number":536,"context_line":""},{"line_number":537,"context_line":"    def _get_lightos_project_name(self, volume_type_id):"},{"line_number":538,"context_line":"        if volume_type_id is None:"},{"line_number":539,"context_line":"            return LIGHTOS_DEFAULT_PROJECT_NAME"},{"line_number":540,"context_line":"        extra_specs \u003d volume_types.get_volume_type_extra_specs(volume_type_id)"},{"line_number":541,"context_line":"        project_name \u003d extra_specs.get("},{"line_number":542,"context_line":"            \u0027lightos:project_name\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"599fbc81_8c151353","line":539,"range":{"start_line":538,"start_character":0,"end_line":539,"end_character":47},"in_reply_to":"17db325c_22fb107d","updated":"2022-01-30 09:25:41.000000000","message":"Done","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"8516394cadd55b34784d36232a3c61993f1886f2","unresolved":true,"context_lines":[{"line_number":535,"context_line":"        return lightos_volname"},{"line_number":536,"context_line":""},{"line_number":537,"context_line":"    def _get_lightos_project_name(self, volume_type_id):"},{"line_number":538,"context_line":"        if volume_type_id is None:"},{"line_number":539,"context_line":"            return LIGHTOS_DEFAULT_PROJECT_NAME"},{"line_number":540,"context_line":"        extra_specs \u003d volume_types.get_volume_type_extra_specs(volume_type_id)"},{"line_number":541,"context_line":"        project_name \u003d extra_specs.get("},{"line_number":542,"context_line":"            \u0027lightos:project_name\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"17db325c_22fb107d","line":539,"range":{"start_line":538,"start_character":0,"end_line":539,"end_character":47},"in_reply_to":"540b4624_72c4bab7","updated":"2022-01-14 09:04:26.000000000","message":"good, then we can remove this","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"d897ea51bc1c0f730501dc6e42b0e7c4499d4715","unresolved":true,"context_lines":[{"line_number":537,"context_line":"    def _get_lightos_project_name(self, volume_type_id):"},{"line_number":538,"context_line":"        if volume_type_id is None:"},{"line_number":539,"context_line":"            return LIGHTOS_DEFAULT_PROJECT_NAME"},{"line_number":540,"context_line":"        extra_specs \u003d volume_types.get_volume_type_extra_specs(volume_type_id)"},{"line_number":541,"context_line":"        project_name \u003d extra_specs.get("},{"line_number":542,"context_line":"            \u0027lightos:project_name\u0027,"},{"line_number":543,"context_line":"            LIGHTOS_DEFAULT_PROJECT_NAME)"}],"source_content_type":"text/x-python","patch_set":10,"id":"e8ecad72_34e08da7","line":540,"range":{"start_line":540,"start_character":8,"end_line":540,"end_character":78},"updated":"2022-01-13 17:19:33.000000000","message":"nit: For calls made from volumes it would be better to use the volume object that they receive to retrieve this kind of information.\n\n  extra_specs \u003d volume.volume_type.extra_specs\n\nDoing it this way may save us an extra DB retrieval","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"6bf113f6b670baa3577e296e9f1a36547b90aa30","unresolved":false,"context_lines":[{"line_number":537,"context_line":"    def _get_lightos_project_name(self, volume_type_id):"},{"line_number":538,"context_line":"        if volume_type_id is None:"},{"line_number":539,"context_line":"            return LIGHTOS_DEFAULT_PROJECT_NAME"},{"line_number":540,"context_line":"        extra_specs \u003d volume_types.get_volume_type_extra_specs(volume_type_id)"},{"line_number":541,"context_line":"        project_name \u003d extra_specs.get("},{"line_number":542,"context_line":"            \u0027lightos:project_name\u0027,"},{"line_number":543,"context_line":"            LIGHTOS_DEFAULT_PROJECT_NAME)"}],"source_content_type":"text/x-python","patch_set":10,"id":"3bfc706c_706d6c2d","line":540,"range":{"start_line":540,"start_character":8,"end_line":540,"end_character":78},"in_reply_to":"84425f15_6154ba62","updated":"2022-01-30 09:25:41.000000000","message":"Done","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"8516394cadd55b34784d36232a3c61993f1886f2","unresolved":true,"context_lines":[{"line_number":537,"context_line":"    def _get_lightos_project_name(self, volume_type_id):"},{"line_number":538,"context_line":"        if volume_type_id is None:"},{"line_number":539,"context_line":"            return LIGHTOS_DEFAULT_PROJECT_NAME"},{"line_number":540,"context_line":"        extra_specs \u003d volume_types.get_volume_type_extra_specs(volume_type_id)"},{"line_number":541,"context_line":"        project_name \u003d extra_specs.get("},{"line_number":542,"context_line":"            \u0027lightos:project_name\u0027,"},{"line_number":543,"context_line":"            LIGHTOS_DEFAULT_PROJECT_NAME)"}],"source_content_type":"text/x-python","patch_set":10,"id":"84425f15_6154ba62","line":540,"range":{"start_line":540,"start_character":8,"end_line":540,"end_character":78},"in_reply_to":"e8ecad72_34e08da7","updated":"2022-01-14 09:04:26.000000000","message":"ack","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"d897ea51bc1c0f730501dc6e42b0e7c4499d4715","unresolved":true,"context_lines":[{"line_number":583,"context_line":"        assert vol_uuid or vol_name, \u0027LightOS volume UUID or name \\"},{"line_number":584,"context_line":"        must be supplied\u0027"},{"line_number":585,"context_line":"        # we can stop on any terminal status"},{"line_number":586,"context_line":"        # possible states: Unknown, Creating, Available, Deleting, Deleted,"},{"line_number":587,"context_line":"        # Failed, Updating"},{"line_number":588,"context_line":"        states_to_wait_for \u003d ("},{"line_number":589,"context_line":"            \u0027Available\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"379c2aa9_7a26c0b4","line":586,"range":{"start_line":586,"start_character":36,"end_line":586,"end_character":44},"updated":"2022-01-13 17:19:33.000000000","message":"-1: Creating is not a terminal status and we are not halting on it.","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"3d34d87a49da5c217c43628e2e10640e85be30f1","unresolved":true,"context_lines":[{"line_number":583,"context_line":"        assert vol_uuid or vol_name, \u0027LightOS volume UUID or name \\"},{"line_number":584,"context_line":"        must be supplied\u0027"},{"line_number":585,"context_line":"        # we can stop on any terminal status"},{"line_number":586,"context_line":"        # possible states: Unknown, Creating, Available, Deleting, Deleted,"},{"line_number":587,"context_line":"        # Failed, Updating"},{"line_number":588,"context_line":"        states_to_wait_for \u003d ("},{"line_number":589,"context_line":"            \u0027Available\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"c41e06ca_26e4c863","line":586,"range":{"start_line":586,"start_character":36,"end_line":586,"end_character":44},"in_reply_to":"0fc869d5_ebaa8961","updated":"2022-01-14 10:43:18.000000000","message":"I fixed the comment to make it clear this is a lightos volume","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"8516394cadd55b34784d36232a3c61993f1886f2","unresolved":true,"context_lines":[{"line_number":583,"context_line":"        assert vol_uuid or vol_name, \u0027LightOS volume UUID or name \\"},{"line_number":584,"context_line":"        must be supplied\u0027"},{"line_number":585,"context_line":"        # we can stop on any terminal status"},{"line_number":586,"context_line":"        # possible states: Unknown, Creating, Available, Deleting, Deleted,"},{"line_number":587,"context_line":"        # Failed, Updating"},{"line_number":588,"context_line":"        states_to_wait_for \u003d ("},{"line_number":589,"context_line":"            \u0027Available\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"0fc869d5_ebaa8961","line":586,"range":{"start_line":586,"start_character":36,"end_line":586,"end_character":44},"in_reply_to":"379c2aa9_7a26c0b4","updated":"2022-01-14 09:04:26.000000000","message":"You are right, this comment is out of wack with the code. We\u0027ll fix the comment. (Just to make sure it\u0027s clear, these are the *LightOS* volume states, not the Cinder volume states).","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"c09c1a5d19c1baec3a2aa1066363cac9a4274ab5","unresolved":false,"context_lines":[{"line_number":583,"context_line":"        assert vol_uuid or vol_name, \u0027LightOS volume UUID or name \\"},{"line_number":584,"context_line":"        must be supplied\u0027"},{"line_number":585,"context_line":"        # we can stop on any terminal status"},{"line_number":586,"context_line":"        # possible states: Unknown, Creating, Available, Deleting, Deleted,"},{"line_number":587,"context_line":"        # Failed, Updating"},{"line_number":588,"context_line":"        states_to_wait_for \u003d ("},{"line_number":589,"context_line":"            \u0027Available\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"3d90b70d_3ffec0d0","line":586,"range":{"start_line":586,"start_character":36,"end_line":586,"end_character":44},"in_reply_to":"c41e06ca_26e4c863","updated":"2022-01-14 14:12:03.000000000","message":"Ack","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"d897ea51bc1c0f730501dc6e42b0e7c4499d4715","unresolved":true,"context_lines":[{"line_number":615,"context_line":"            LIGHTOS_DEFAULT_PROJECT_NAME)"},{"line_number":616,"context_line":"        return (compression, num_replicas, project_name)"},{"line_number":617,"context_line":""},{"line_number":618,"context_line":"    def _validate_num_replicas(self, num_replicas):"},{"line_number":619,"context_line":"        return num_replicas in [\u00271\u0027, \u00272\u0027, \u00273\u0027]"},{"line_number":620,"context_line":""},{"line_number":621,"context_line":"    def _create_new_lightos_volume(self,"}],"source_content_type":"text/x-python","patch_set":10,"id":"339c4559_2469ec63","line":618,"updated":"2022-01-13 17:19:33.000000000","message":"We don\u0027t need this method if we change the configuration option definition as mentioned before.","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"3d34d87a49da5c217c43628e2e10640e85be30f1","unresolved":false,"context_lines":[{"line_number":615,"context_line":"            LIGHTOS_DEFAULT_PROJECT_NAME)"},{"line_number":616,"context_line":"        return (compression, num_replicas, project_name)"},{"line_number":617,"context_line":""},{"line_number":618,"context_line":"    def _validate_num_replicas(self, num_replicas):"},{"line_number":619,"context_line":"        return num_replicas in [\u00271\u0027, \u00272\u0027, \u00273\u0027]"},{"line_number":620,"context_line":""},{"line_number":621,"context_line":"    def _create_new_lightos_volume(self,"}],"source_content_type":"text/x-python","patch_set":10,"id":"ebba7257_6add46d7","line":618,"in_reply_to":"339c4559_2469ec63","updated":"2022-01-14 10:43:18.000000000","message":"Ack","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"d897ea51bc1c0f730501dc6e42b0e7c4499d4715","unresolved":true,"context_lines":[{"line_number":616,"context_line":"        return (compression, num_replicas, project_name)"},{"line_number":617,"context_line":""},{"line_number":618,"context_line":"    def _validate_num_replicas(self, num_replicas):"},{"line_number":619,"context_line":"        return num_replicas in [\u00271\u0027, \u00272\u0027, \u00273\u0027]"},{"line_number":620,"context_line":""},{"line_number":621,"context_line":"    def _create_new_lightos_volume(self,"},{"line_number":622,"context_line":"                                   os_volume,"}],"source_content_type":"text/x-python","patch_set":10,"id":"ae5b051f_89ed6825","line":619,"range":{"start_line":619,"start_character":31,"end_line":619,"end_character":46},"updated":"2022-01-13 17:19:33.000000000","message":"nit: better a tupple than a list","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"3d34d87a49da5c217c43628e2e10640e85be30f1","unresolved":false,"context_lines":[{"line_number":616,"context_line":"        return (compression, num_replicas, project_name)"},{"line_number":617,"context_line":""},{"line_number":618,"context_line":"    def _validate_num_replicas(self, num_replicas):"},{"line_number":619,"context_line":"        return num_replicas in [\u00271\u0027, \u00272\u0027, \u00273\u0027]"},{"line_number":620,"context_line":""},{"line_number":621,"context_line":"    def _create_new_lightos_volume(self,"},{"line_number":622,"context_line":"                                   os_volume,"}],"source_content_type":"text/x-python","patch_set":10,"id":"67487c74_a921b06d","line":619,"range":{"start_line":619,"start_character":31,"end_line":619,"end_character":46},"in_reply_to":"ae5b051f_89ed6825","updated":"2022-01-14 10:43:18.000000000","message":"Ack","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"d897ea51bc1c0f730501dc6e42b0e7c4499d4715","unresolved":true,"context_lines":[{"line_number":625,"context_line":"                                   src_snapshot_lightos_name\u003dNone):"},{"line_number":626,"context_line":"        \"\"\"Create a new LightOS volume for this openstack volume.\"\"\""},{"line_number":627,"context_line":"        (compression, num_replicas, _) \u003d self._get_volume_specs(os_volume)"},{"line_number":628,"context_line":"        if not self._validate_num_replicas(num_replicas):"},{"line_number":629,"context_line":"            msg \u003d \u0027Cannot create LightOS volume with %s replicas\u0027 % ("},{"line_number":630,"context_line":"                num_replicas)"},{"line_number":631,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":632,"context_line":""},{"line_number":633,"context_line":"        return self.cluster.send_cmd("},{"line_number":634,"context_line":"            cmd\u003d\u0027create_volume\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"5cc196ca_42476790","line":631,"range":{"start_line":628,"start_character":0,"end_line":631,"end_character":66},"updated":"2022-01-13 17:19:33.000000000","message":"We don\u0027t need this if we change the configuration option definition as mentioned before.","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"3d34d87a49da5c217c43628e2e10640e85be30f1","unresolved":false,"context_lines":[{"line_number":625,"context_line":"                                   src_snapshot_lightos_name\u003dNone):"},{"line_number":626,"context_line":"        \"\"\"Create a new LightOS volume for this openstack volume.\"\"\""},{"line_number":627,"context_line":"        (compression, num_replicas, _) \u003d self._get_volume_specs(os_volume)"},{"line_number":628,"context_line":"        if not self._validate_num_replicas(num_replicas):"},{"line_number":629,"context_line":"            msg \u003d \u0027Cannot create LightOS volume with %s replicas\u0027 % ("},{"line_number":630,"context_line":"                num_replicas)"},{"line_number":631,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":632,"context_line":""},{"line_number":633,"context_line":"        return self.cluster.send_cmd("},{"line_number":634,"context_line":"            cmd\u003d\u0027create_volume\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a6f0652_3a23baa4","line":631,"range":{"start_line":628,"start_character":0,"end_line":631,"end_character":66},"in_reply_to":"5cc196ca_42476790","updated":"2022-01-14 10:43:18.000000000","message":"Ack","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"d897ea51bc1c0f730501dc6e42b0e7c4499d4715","unresolved":true,"context_lines":[{"line_number":678,"context_line":"    def _create_volume(self, volume, src_snapshot_lightos_name):"},{"line_number":679,"context_line":"        lightos_name \u003d self._lightos_volname(volume)"},{"line_number":680,"context_line":"        project_name \u003d self._get_lightos_project_name("},{"line_number":681,"context_line":"            volume[\"volume_type_id\"])"},{"line_number":682,"context_line":"        lightos_uuid \u003d \u0027\u003cUNKNOWN\u003e\u0027"},{"line_number":683,"context_line":"        vol_state \u003d \u0027UNKNOWN\u0027"},{"line_number":684,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"d0918ee5_14f998f0","line":681,"range":{"start_line":681,"start_character":12,"end_line":681,"end_character":36},"updated":"2022-01-13 17:19:33.000000000","message":"-1: We should use attributes wherever possible:\n\n  volume.volume_type_id","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"3d34d87a49da5c217c43628e2e10640e85be30f1","unresolved":false,"context_lines":[{"line_number":678,"context_line":"    def _create_volume(self, volume, src_snapshot_lightos_name):"},{"line_number":679,"context_line":"        lightos_name \u003d self._lightos_volname(volume)"},{"line_number":680,"context_line":"        project_name \u003d self._get_lightos_project_name("},{"line_number":681,"context_line":"            volume[\"volume_type_id\"])"},{"line_number":682,"context_line":"        lightos_uuid \u003d \u0027\u003cUNKNOWN\u003e\u0027"},{"line_number":683,"context_line":"        vol_state \u003d \u0027UNKNOWN\u0027"},{"line_number":684,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"49a25a92_ace120a7","line":681,"range":{"start_line":681,"start_character":12,"end_line":681,"end_character":36},"in_reply_to":"d0918ee5_14f998f0","updated":"2022-01-14 10:43:18.000000000","message":"Ack","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"d897ea51bc1c0f730501dc6e42b0e7c4499d4715","unresolved":true,"context_lines":[{"line_number":688,"context_line":"        # openstack to retry the call, it\u0027s highly unlikely that we created"},{"line_number":689,"context_line":"        # it but it does not show up yet, so assume that if it does not show"},{"line_number":690,"context_line":"        # up, it was never created"},{"line_number":691,"context_line":"        (status_code, resp) \u003d self._get_lightos_volume(project_name,"},{"line_number":692,"context_line":"                                                       timeout\u003dself."},{"line_number":693,"context_line":"                                                       logical_op_timeout,"},{"line_number":694,"context_line":"                                                       vol_name\u003dlightos_name)"}],"source_content_type":"text/x-python","patch_set":10,"id":"a4339162_ff7afa51","line":691,"range":{"start_line":691,"start_character":8,"end_line":691,"end_character":27},"updated":"2022-01-13 17:19:33.000000000","message":"nit: There\u0027s no need for the parentheses\n\n status_code, resp \u003d self._get_lightos_volume(project_name,","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"c09c1a5d19c1baec3a2aa1066363cac9a4274ab5","unresolved":false,"context_lines":[{"line_number":688,"context_line":"        # openstack to retry the call, it\u0027s highly unlikely that we created"},{"line_number":689,"context_line":"        # it but it does not show up yet, so assume that if it does not show"},{"line_number":690,"context_line":"        # up, it was never created"},{"line_number":691,"context_line":"        (status_code, resp) \u003d self._get_lightos_volume(project_name,"},{"line_number":692,"context_line":"                                                       timeout\u003dself."},{"line_number":693,"context_line":"                                                       logical_op_timeout,"},{"line_number":694,"context_line":"                                                       vol_name\u003dlightos_name)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9e0fe7ad_872490f2","line":691,"range":{"start_line":691,"start_character":8,"end_line":691,"end_character":27},"in_reply_to":"a4339162_ff7afa51","updated":"2022-01-14 14:12:03.000000000","message":"Ack","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"d897ea51bc1c0f730501dc6e42b0e7c4499d4715","unresolved":true,"context_lines":[{"line_number":693,"context_line":"                                                       logical_op_timeout,"},{"line_number":694,"context_line":"                                                       vol_name\u003dlightos_name)"},{"line_number":695,"context_line":"        if status_code \u003d\u003d httpstatus.NOT_FOUND:"},{"line_number":696,"context_line":"            (status_code, resp) \u003d self._create_new_lightos_volume("},{"line_number":697,"context_line":"                os_volume\u003dvolume,"},{"line_number":698,"context_line":"                project_name\u003dproject_name,"},{"line_number":699,"context_line":"                lightos_name\u003dlightos_name,"}],"source_content_type":"text/x-python","patch_set":10,"id":"650eb979_2fbfb0fa","line":696,"range":{"start_line":696,"start_character":12,"end_line":696,"end_character":31},"updated":"2022-01-13 17:19:33.000000000","message":"nit: There\u0027s no need for the parentheses","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"3d34d87a49da5c217c43628e2e10640e85be30f1","unresolved":false,"context_lines":[{"line_number":693,"context_line":"                                                       logical_op_timeout,"},{"line_number":694,"context_line":"                                                       vol_name\u003dlightos_name)"},{"line_number":695,"context_line":"        if status_code \u003d\u003d httpstatus.NOT_FOUND:"},{"line_number":696,"context_line":"            (status_code, resp) \u003d self._create_new_lightos_volume("},{"line_number":697,"context_line":"                os_volume\u003dvolume,"},{"line_number":698,"context_line":"                project_name\u003dproject_name,"},{"line_number":699,"context_line":"                lightos_name\u003dlightos_name,"}],"source_content_type":"text/x-python","patch_set":10,"id":"95ff3ce1_d5dc07e0","line":696,"range":{"start_line":696,"start_character":12,"end_line":696,"end_character":31},"in_reply_to":"650eb979_2fbfb0fa","updated":"2022-01-14 10:43:18.000000000","message":"Ack","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"d897ea51bc1c0f730501dc6e42b0e7c4499d4715","unresolved":true,"context_lines":[{"line_number":699,"context_line":"                lightos_name\u003dlightos_name,"},{"line_number":700,"context_line":"                src_snapshot_lightos_name\u003dsrc_snapshot_lightos_name)"},{"line_number":701,"context_line":""},{"line_number":702,"context_line":"        # when we get here, we definitely tried to create it in the past"},{"line_number":703,"context_line":"        if status_code \u003d\u003d httpstatus.OK:"},{"line_number":704,"context_line":"            lightos_uuid \u003d resp[\u0027UUID\u0027]"},{"line_number":705,"context_line":"            vol_state \u003d self._wait_for_volume_available("}],"source_content_type":"text/x-python","patch_set":10,"id":"1e948bdf_b3580fe9","line":702,"range":{"start_line":702,"start_character":42,"end_line":702,"end_character":72},"updated":"2022-01-13 17:19:33.000000000","message":"nit: This can be misleading, since the past may have been just a millisecond earlier...","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"c09c1a5d19c1baec3a2aa1066363cac9a4274ab5","unresolved":false,"context_lines":[{"line_number":699,"context_line":"                lightos_name\u003dlightos_name,"},{"line_number":700,"context_line":"                src_snapshot_lightos_name\u003dsrc_snapshot_lightos_name)"},{"line_number":701,"context_line":""},{"line_number":702,"context_line":"        # when we get here, we definitely tried to create it in the past"},{"line_number":703,"context_line":"        if status_code \u003d\u003d httpstatus.OK:"},{"line_number":704,"context_line":"            lightos_uuid \u003d resp[\u0027UUID\u0027]"},{"line_number":705,"context_line":"            vol_state \u003d self._wait_for_volume_available("}],"source_content_type":"text/x-python","patch_set":10,"id":"d043e82a_667e1749","line":702,"range":{"start_line":702,"start_character":42,"end_line":702,"end_character":72},"in_reply_to":"1e948bdf_b3580fe9","updated":"2022-01-14 14:12:03.000000000","message":"Ack","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"d897ea51bc1c0f730501dc6e42b0e7c4499d4715","unresolved":true,"context_lines":[{"line_number":715,"context_line":"                    project_name)"},{"line_number":716,"context_line":"                return"},{"line_number":717,"context_line":""},{"line_number":718,"context_line":"            # if volume was created in failed state we should clean it up"},{"line_number":719,"context_line":"            LOG.warn("},{"line_number":720,"context_line":"                \u0027LightOS volume with UUID %s project %s last_state is %s\u0027,"},{"line_number":721,"context_line":"                lightos_uuid,"},{"line_number":722,"context_line":"                project_name,"},{"line_number":723,"context_line":"                vol_state)"},{"line_number":724,"context_line":"            if vol_state !\u003d \u0027UNKNOWN\u0027:"},{"line_number":725,"context_line":"                LOG.debug("},{"line_number":726,"context_line":"                    \u0027Cleaning up LightOS volume with UUID %s project %s\u0027,"},{"line_number":727,"context_line":"                    lightos_uuid,"},{"line_number":728,"context_line":"                    project_name)"},{"line_number":729,"context_line":"                self._delete_lightos_volume(project_name, lightos_uuid)"},{"line_number":730,"context_line":"                # wait for openstack to call us again to create it"},{"line_number":731,"context_line":""},{"line_number":732,"context_line":"        msg \u003d \u0027Did not succeed creating LightOS volume with UUID %s \\"},{"line_number":733,"context_line":"        status_code %s last state %s\u0027 % \\"}],"source_content_type":"text/x-python","patch_set":10,"id":"a7fc3cc5_d91fbe81","line":730,"range":{"start_line":718,"start_character":0,"end_line":730,"end_character":66},"updated":"2022-01-13 17:19:33.000000000","message":"-1: Why bother deleting it?  We\u0027ll delete it when the user sees that the volume is in error state and requests cinder to delete it.\n\nLeaving it in the storage system may allow an admin to debug things by checking the volume in the array and see if there\u0027s something wrong with it.","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"56d46bdafa56c7c200476c62aa4a07825d93e5bb","unresolved":false,"context_lines":[{"line_number":715,"context_line":"                    project_name)"},{"line_number":716,"context_line":"                return"},{"line_number":717,"context_line":""},{"line_number":718,"context_line":"            # if volume was created in failed state we should clean it up"},{"line_number":719,"context_line":"            LOG.warn("},{"line_number":720,"context_line":"                \u0027LightOS volume with UUID %s project %s last_state is %s\u0027,"},{"line_number":721,"context_line":"                lightos_uuid,"},{"line_number":722,"context_line":"                project_name,"},{"line_number":723,"context_line":"                vol_state)"},{"line_number":724,"context_line":"            if vol_state !\u003d \u0027UNKNOWN\u0027:"},{"line_number":725,"context_line":"                LOG.debug("},{"line_number":726,"context_line":"                    \u0027Cleaning up LightOS volume with UUID %s project %s\u0027,"},{"line_number":727,"context_line":"                    lightos_uuid,"},{"line_number":728,"context_line":"                    project_name)"},{"line_number":729,"context_line":"                self._delete_lightos_volume(project_name, lightos_uuid)"},{"line_number":730,"context_line":"                # wait for openstack to call us again to create it"},{"line_number":731,"context_line":""},{"line_number":732,"context_line":"        msg \u003d \u0027Did not succeed creating LightOS volume with UUID %s \\"},{"line_number":733,"context_line":"        status_code %s last state %s\u0027 % \\"}],"source_content_type":"text/x-python","patch_set":10,"id":"da6b137b_6eb266f5","line":730,"range":{"start_line":718,"start_character":0,"end_line":730,"end_character":66},"in_reply_to":"231a90ea_f9c065af","updated":"2022-01-17 17:59:36.000000000","message":"OK, sounds good.","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"8516394cadd55b34784d36232a3c61993f1886f2","unresolved":true,"context_lines":[{"line_number":715,"context_line":"                    project_name)"},{"line_number":716,"context_line":"                return"},{"line_number":717,"context_line":""},{"line_number":718,"context_line":"            # if volume was created in failed state we should clean it up"},{"line_number":719,"context_line":"            LOG.warn("},{"line_number":720,"context_line":"                \u0027LightOS volume with UUID %s project %s last_state is %s\u0027,"},{"line_number":721,"context_line":"                lightos_uuid,"},{"line_number":722,"context_line":"                project_name,"},{"line_number":723,"context_line":"                vol_state)"},{"line_number":724,"context_line":"            if vol_state !\u003d \u0027UNKNOWN\u0027:"},{"line_number":725,"context_line":"                LOG.debug("},{"line_number":726,"context_line":"                    \u0027Cleaning up LightOS volume with UUID %s project %s\u0027,"},{"line_number":727,"context_line":"                    lightos_uuid,"},{"line_number":728,"context_line":"                    project_name)"},{"line_number":729,"context_line":"                self._delete_lightos_volume(project_name, lightos_uuid)"},{"line_number":730,"context_line":"                # wait for openstack to call us again to create it"},{"line_number":731,"context_line":""},{"line_number":732,"context_line":"        msg \u003d \u0027Did not succeed creating LightOS volume with UUID %s \\"},{"line_number":733,"context_line":"        status_code %s last state %s\u0027 % \\"}],"source_content_type":"text/x-python","patch_set":10,"id":"ef5bf019_dea32cea","line":730,"range":{"start_line":718,"start_character":0,"end_line":730,"end_character":66},"in_reply_to":"a7fc3cc5_d91fbe81","updated":"2022-01-14 09:04:26.000000000","message":"This is the LightOS volume, not the Cinder volume. IIRC, when the LightOS volume is created in an error state, we won\u0027t progress to creating the Cinder volume (or more accurately, we\u0027ll try again and create the Cinder volume with a *different* LightOS backing volume). Therefore we prepfer to clean up the LightOS volume here since otherwise it will just stick around. The storage admin can get an alert that a volume was created in an error state and look into it in the logs but it\u0027s cleaner to delete it. (For the record, volumes are almost never created in an error state and when it happens it\u0027s nearly always due to a transient error, so there\u0027s not mucht to do about it.)","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"c09c1a5d19c1baec3a2aa1066363cac9a4274ab5","unresolved":false,"context_lines":[{"line_number":715,"context_line":"                    project_name)"},{"line_number":716,"context_line":"                return"},{"line_number":717,"context_line":""},{"line_number":718,"context_line":"            # if volume was created in failed state we should clean it up"},{"line_number":719,"context_line":"            LOG.warn("},{"line_number":720,"context_line":"                \u0027LightOS volume with UUID %s project %s last_state is %s\u0027,"},{"line_number":721,"context_line":"                lightos_uuid,"},{"line_number":722,"context_line":"                project_name,"},{"line_number":723,"context_line":"                vol_state)"},{"line_number":724,"context_line":"            if vol_state !\u003d \u0027UNKNOWN\u0027:"},{"line_number":725,"context_line":"                LOG.debug("},{"line_number":726,"context_line":"                    \u0027Cleaning up LightOS volume with UUID %s project %s\u0027,"},{"line_number":727,"context_line":"                    lightos_uuid,"},{"line_number":728,"context_line":"                    project_name)"},{"line_number":729,"context_line":"                self._delete_lightos_volume(project_name, lightos_uuid)"},{"line_number":730,"context_line":"                # wait for openstack to call us again to create it"},{"line_number":731,"context_line":""},{"line_number":732,"context_line":"        msg \u003d \u0027Did not succeed creating LightOS volume with UUID %s \\"},{"line_number":733,"context_line":"        status_code %s last state %s\u0027 % \\"}],"source_content_type":"text/x-python","patch_set":10,"id":"231a90ea_f9c065af","line":730,"range":{"start_line":718,"start_character":0,"end_line":730,"end_character":66},"in_reply_to":"ef5bf019_dea32cea","updated":"2022-01-14 14:12:03.000000000","message":"Ack","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"d897ea51bc1c0f730501dc6e42b0e7c4499d4715","unresolved":true,"context_lines":[{"line_number":734,"context_line":"              (lightos_uuid, status_code, vol_state)"},{"line_number":735,"context_line":"        raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":736,"context_line":""},{"line_number":737,"context_line":"    def update_volume(self, volume):"},{"line_number":738,"context_line":"        LOG.warn(\u0027UNIMPLEMENTED: update/n\u0027)"},{"line_number":739,"context_line":""},{"line_number":740,"context_line":"    def _wait_for_volume_state("},{"line_number":741,"context_line":"            self,"},{"line_number":742,"context_line":"            project_name,"}],"source_content_type":"text/x-python","patch_set":10,"id":"2e0aae95_2c7c6f34","line":739,"range":{"start_line":737,"start_character":0,"end_line":739,"end_character":0},"updated":"2022-01-13 17:19:33.000000000","message":"-1: What is this method for?  It\u0027s not part of the Cinder driver interface and it\u0027s not called within the driver either.","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"8516394cadd55b34784d36232a3c61993f1886f2","unresolved":true,"context_lines":[{"line_number":734,"context_line":"              (lightos_uuid, status_code, vol_state)"},{"line_number":735,"context_line":"        raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":736,"context_line":""},{"line_number":737,"context_line":"    def update_volume(self, volume):"},{"line_number":738,"context_line":"        LOG.warn(\u0027UNIMPLEMENTED: update/n\u0027)"},{"line_number":739,"context_line":""},{"line_number":740,"context_line":"    def _wait_for_volume_state("},{"line_number":741,"context_line":"            self,"},{"line_number":742,"context_line":"            project_name,"}],"source_content_type":"text/x-python","patch_set":10,"id":"681201a0_48b4ac87","line":739,"range":{"start_line":737,"start_character":0,"end_line":739,"end_character":0},"in_reply_to":"2e0aae95_2c7c6f34","updated":"2022-01-14 09:04:26.000000000","message":"Not sure when it snuck in, we\u0027ll nuke it.","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"3d34d87a49da5c217c43628e2e10640e85be30f1","unresolved":false,"context_lines":[{"line_number":734,"context_line":"              (lightos_uuid, status_code, vol_state)"},{"line_number":735,"context_line":"        raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":736,"context_line":""},{"line_number":737,"context_line":"    def update_volume(self, volume):"},{"line_number":738,"context_line":"        LOG.warn(\u0027UNIMPLEMENTED: update/n\u0027)"},{"line_number":739,"context_line":""},{"line_number":740,"context_line":"    def _wait_for_volume_state("},{"line_number":741,"context_line":"            self,"},{"line_number":742,"context_line":"            project_name,"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f526b90_edb36b1b","line":739,"range":{"start_line":737,"start_character":0,"end_line":739,"end_character":0},"in_reply_to":"681201a0_48b4ac87","updated":"2022-01-14 10:43:18.000000000","message":"Ack","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"d897ea51bc1c0f730501dc6e42b0e7c4499d4715","unresolved":true,"context_lines":[{"line_number":954,"context_line":"                lightos_api_service_timeout + 10"},{"line_number":955,"context_line":""},{"line_number":956,"context_line":"    def extend_volume(self, volume, size):"},{"line_number":957,"context_line":"        # loop because we might run into concurrent updates to the volume"},{"line_number":958,"context_line":"        end \u003d time.time() + self.logical_op_timeout"},{"line_number":959,"context_line":"        while (time.time() \u003c end):"},{"line_number":960,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a7a0bf4_dc81bb46","line":957,"range":{"start_line":957,"start_character":41,"end_line":957,"end_character":59},"updated":"2022-01-13 17:19:33.000000000","message":"?: What concurrent updates?","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"56d46bdafa56c7c200476c62aa4a07825d93e5bb","unresolved":false,"context_lines":[{"line_number":954,"context_line":"                lightos_api_service_timeout + 10"},{"line_number":955,"context_line":""},{"line_number":956,"context_line":"    def extend_volume(self, volume, size):"},{"line_number":957,"context_line":"        # loop because we might run into concurrent updates to the volume"},{"line_number":958,"context_line":"        end \u003d time.time() + self.logical_op_timeout"},{"line_number":959,"context_line":"        while (time.time() \u003c end):"},{"line_number":960,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":10,"id":"e946a04e_445f6d34","line":957,"range":{"start_line":957,"start_character":41,"end_line":957,"end_character":59},"in_reply_to":"24aa7561_451f192e","updated":"2022-01-17 17:59:36.000000000","message":"Thanks.","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"8516394cadd55b34784d36232a3c61993f1886f2","unresolved":true,"context_lines":[{"line_number":954,"context_line":"                lightos_api_service_timeout + 10"},{"line_number":955,"context_line":""},{"line_number":956,"context_line":"    def extend_volume(self, volume, size):"},{"line_number":957,"context_line":"        # loop because we might run into concurrent updates to the volume"},{"line_number":958,"context_line":"        end \u003d time.time() + self.logical_op_timeout"},{"line_number":959,"context_line":"        while (time.time() \u003c end):"},{"line_number":960,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":10,"id":"daeb30d3_e81928b4","line":957,"range":{"start_line":957,"start_character":41,"end_line":957,"end_character":59},"in_reply_to":"9a7a0bf4_dc81bb46","updated":"2022-01-14 09:04:26.000000000","message":"The LightOS API is async, so we never assume that API calls will reach the LightOS cluster and even if they do, a cluster node handling the API call may fail after it receives it, etc, etc. So whenever we call the API we just loop (until timeout) to retry if needed. The comment is misleading, we loop not because of concurrent updates but because of the async nature of the API. We\u0027ll fix.","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"c09c1a5d19c1baec3a2aa1066363cac9a4274ab5","unresolved":false,"context_lines":[{"line_number":954,"context_line":"                lightos_api_service_timeout + 10"},{"line_number":955,"context_line":""},{"line_number":956,"context_line":"    def extend_volume(self, volume, size):"},{"line_number":957,"context_line":"        # loop because we might run into concurrent updates to the volume"},{"line_number":958,"context_line":"        end \u003d time.time() + self.logical_op_timeout"},{"line_number":959,"context_line":"        while (time.time() \u003c end):"},{"line_number":960,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":10,"id":"24aa7561_451f192e","line":957,"range":{"start_line":957,"start_character":41,"end_line":957,"end_character":59},"in_reply_to":"daeb30d3_e81928b4","updated":"2022-01-14 14:12:03.000000000","message":"Ack","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"d897ea51bc1c0f730501dc6e42b0e7c4499d4715","unresolved":true,"context_lines":[{"line_number":1020,"context_line":""},{"line_number":1021,"context_line":"    @staticmethod"},{"line_number":1022,"context_line":"    def byte_to_gb(bbytes):"},{"line_number":1023,"context_line":"        return int(int(bbytes) / (1024 * 1024 * 1024))"},{"line_number":1024,"context_line":""},{"line_number":1025,"context_line":"    def get_volume_stats(self, refresh\u003dFalse):"},{"line_number":1026,"context_line":"        \"\"\"Retrieve stats info for the volume *service*,"}],"source_content_type":"text/x-python","patch_set":10,"id":"fea1ba73_50091eed","line":1023,"range":{"start_line":1023,"start_character":34,"end_line":1023,"end_character":52},"updated":"2022-01-13 17:19:33.000000000","message":"nit:\n\n from oslo_utils import units\n\n return int(int(bbytes) / units.Gi)","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"3d34d87a49da5c217c43628e2e10640e85be30f1","unresolved":false,"context_lines":[{"line_number":1020,"context_line":""},{"line_number":1021,"context_line":"    @staticmethod"},{"line_number":1022,"context_line":"    def byte_to_gb(bbytes):"},{"line_number":1023,"context_line":"        return int(int(bbytes) / (1024 * 1024 * 1024))"},{"line_number":1024,"context_line":""},{"line_number":1025,"context_line":"    def get_volume_stats(self, refresh\u003dFalse):"},{"line_number":1026,"context_line":"        \"\"\"Retrieve stats info for the volume *service*,"}],"source_content_type":"text/x-python","patch_set":10,"id":"58fa5973_71a78c17","line":1023,"range":{"start_line":1023,"start_character":34,"end_line":1023,"end_character":52},"in_reply_to":"fea1ba73_50091eed","updated":"2022-01-14 10:43:18.000000000","message":"Ack","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"748f742f36e40cdc9f44255dc5aa2f237e3435df","unresolved":true,"context_lines":[{"line_number":1034,"context_line":"            return self._stats"},{"line_number":1035,"context_line":""},{"line_number":1036,"context_line":"        backend_name \u003d self.configuration.safe_get(\u0027volume_backend_name\u0027)"},{"line_number":1037,"context_line":"        storage_protocol \u003d (\u0027lightos\u0027)"},{"line_number":1038,"context_line":"        # as a tenant we dont have access to cluster stats"},{"line_number":1039,"context_line":"        # in the future we might expose this per project via get_project API"},{"line_number":1040,"context_line":"        # currently we remove this stats call."}],"source_content_type":"text/x-python","patch_set":10,"id":"f6d0efb7_0726f9cc","line":1037,"range":{"start_line":1037,"start_character":27,"end_line":1037,"end_character":38},"updated":"2022-01-13 14:50:13.000000000","message":"shouldn\u0027t this be string and not tuple?","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"c09c1a5d19c1baec3a2aa1066363cac9a4274ab5","unresolved":false,"context_lines":[{"line_number":1034,"context_line":"            return self._stats"},{"line_number":1035,"context_line":""},{"line_number":1036,"context_line":"        backend_name \u003d self.configuration.safe_get(\u0027volume_backend_name\u0027)"},{"line_number":1037,"context_line":"        storage_protocol \u003d (\u0027lightos\u0027)"},{"line_number":1038,"context_line":"        # as a tenant we dont have access to cluster stats"},{"line_number":1039,"context_line":"        # in the future we might expose this per project via get_project API"},{"line_number":1040,"context_line":"        # currently we remove this stats call."}],"source_content_type":"text/x-python","patch_set":10,"id":"113b96bc_7a6a22a2","line":1037,"range":{"start_line":1037,"start_character":27,"end_line":1037,"end_character":38},"in_reply_to":"e359421b_64f2c49d","updated":"2022-01-14 14:12:03.000000000","message":"removed","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"d897ea51bc1c0f730501dc6e42b0e7c4499d4715","unresolved":false,"context_lines":[{"line_number":1034,"context_line":"            return self._stats"},{"line_number":1035,"context_line":""},{"line_number":1036,"context_line":"        backend_name \u003d self.configuration.safe_get(\u0027volume_backend_name\u0027)"},{"line_number":1037,"context_line":"        storage_protocol \u003d (\u0027lightos\u0027)"},{"line_number":1038,"context_line":"        # as a tenant we dont have access to cluster stats"},{"line_number":1039,"context_line":"        # in the future we might expose this per project via get_project API"},{"line_number":1040,"context_line":"        # currently we remove this stats call."}],"source_content_type":"text/x-python","patch_set":10,"id":"e359421b_64f2c49d","line":1037,"range":{"start_line":1037,"start_character":27,"end_line":1037,"end_character":38},"in_reply_to":"f6d0efb7_0726f9cc","updated":"2022-01-13 17:19:33.000000000","message":"it is not a tupple, it is a string, although it has unnecessary parentheses around it.  For it to be a tupple it would have to be:\n\n storage_protocol \u003d (\u0027lightos\u0027,)\n\nor\n\n storage_protocol \u003d \u0027lightos\u0027,","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"d897ea51bc1c0f730501dc6e42b0e7c4499d4715","unresolved":true,"context_lines":[{"line_number":1040,"context_line":"        # currently we remove this stats call."},{"line_number":1041,"context_line":"        # cluster_stats \u003d self.get_cluster_stats()"},{"line_number":1042,"context_line":""},{"line_number":1043,"context_line":"        data \u003d {}"},{"line_number":1044,"context_line":"        data[\"volume_backend_name\"] \u003d backend_name or self.__class__.__name__"},{"line_number":1045,"context_line":"        data[\"vendor_name\"] \u003d \u0027LightOS Storage\u0027"},{"line_number":1046,"context_line":"        data[\"driver_version\"] \u003d self.VERSION"}],"source_content_type":"text/x-python","patch_set":10,"id":"f01abefa_75f20c87","line":1043,"updated":"2022-01-13 17:19:33.000000000","message":"nit: Given the simplicity of the data that is returned we can create the dict with it all\n\n data \u003d {\n     \"volume_backend_name\": backend_name or self.__class__.__name__,\n     \"vendor_name\": \u0027LightOS Storage\u0027,\n     . . .\n }","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"3d34d87a49da5c217c43628e2e10640e85be30f1","unresolved":false,"context_lines":[{"line_number":1040,"context_line":"        # currently we remove this stats call."},{"line_number":1041,"context_line":"        # cluster_stats \u003d self.get_cluster_stats()"},{"line_number":1042,"context_line":""},{"line_number":1043,"context_line":"        data \u003d {}"},{"line_number":1044,"context_line":"        data[\"volume_backend_name\"] \u003d backend_name or self.__class__.__name__"},{"line_number":1045,"context_line":"        data[\"vendor_name\"] \u003d \u0027LightOS Storage\u0027"},{"line_number":1046,"context_line":"        data[\"driver_version\"] \u003d self.VERSION"}],"source_content_type":"text/x-python","patch_set":10,"id":"c5d1fa3f_6dee6589","line":1043,"in_reply_to":"f01abefa_75f20c87","updated":"2022-01-14 10:43:18.000000000","message":"Ack","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"d897ea51bc1c0f730501dc6e42b0e7c4499d4715","unresolved":true,"context_lines":[{"line_number":1053,"context_line":"        # It would be preferable to return"},{"line_number":1054,"context_line":"        # self.byte_to_gb(cluster_stats[\u0027freePhysicalStorage\u0027])"},{"line_number":1055,"context_line":"        # here but we return \u0027infinite\u0027 due to the Cinder bug described in"},{"line_number":1056,"context_line":"        # https://bugs.launchpad.net/cinder/+bug/1871371"},{"line_number":1057,"context_line":"        data[\u0027free_capacity_gb\u0027] \u003d \u0027infinite\u0027"},{"line_number":1058,"context_line":"        data[\u0027thin_provisioning_support\u0027] \u003d True"},{"line_number":1059,"context_line":"        data[\u0027compression\u0027] \u003d True"}],"source_content_type":"text/x-python","patch_set":10,"id":"b33e5e58_7137328a","line":1056,"updated":"2022-01-13 17:19:33.000000000","message":"nit: This may create issues on deployments with backends of different vendors.","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"56d46bdafa56c7c200476c62aa4a07825d93e5bb","unresolved":false,"context_lines":[{"line_number":1053,"context_line":"        # It would be preferable to return"},{"line_number":1054,"context_line":"        # self.byte_to_gb(cluster_stats[\u0027freePhysicalStorage\u0027])"},{"line_number":1055,"context_line":"        # here but we return \u0027infinite\u0027 due to the Cinder bug described in"},{"line_number":1056,"context_line":"        # https://bugs.launchpad.net/cinder/+bug/1871371"},{"line_number":1057,"context_line":"        data[\u0027free_capacity_gb\u0027] \u003d \u0027infinite\u0027"},{"line_number":1058,"context_line":"        data[\u0027thin_provisioning_support\u0027] \u003d True"},{"line_number":1059,"context_line":"        data[\u0027compression\u0027] \u003d True"}],"source_content_type":"text/x-python","patch_set":10,"id":"80e446a3_0d01101b","line":1056,"in_reply_to":"407cb406_5445db9a","updated":"2022-01-17 17:59:36.000000000","message":"Sorry again for being so brief.\nThe problem would be in the scheduling, because your backend would always look like it has free space, so when the scheduler has to decide where to create a new volume it will always go to your backend.\nIn most deployments this won\u0027t be an issue though, because people tend to create volume types that are tied to a specific backend.\nAnother problem that can happen is if the backend is running low on space, then the scheduler will not notice and won\u0027t stop sending create requests to the service.","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"38de34bafe60782ebe039dc4a91f0e54cd859600","unresolved":false,"context_lines":[{"line_number":1053,"context_line":"        # It would be preferable to return"},{"line_number":1054,"context_line":"        # self.byte_to_gb(cluster_stats[\u0027freePhysicalStorage\u0027])"},{"line_number":1055,"context_line":"        # here but we return \u0027infinite\u0027 due to the Cinder bug described in"},{"line_number":1056,"context_line":"        # https://bugs.launchpad.net/cinder/+bug/1871371"},{"line_number":1057,"context_line":"        data[\u0027free_capacity_gb\u0027] \u003d \u0027infinite\u0027"},{"line_number":1058,"context_line":"        data[\u0027thin_provisioning_support\u0027] \u003d True"},{"line_number":1059,"context_line":"        data[\u0027compression\u0027] \u003d True"}],"source_content_type":"text/x-python","patch_set":10,"id":"9eeb3839_7a40dc2a","line":1056,"in_reply_to":"80e446a3_0d01101b","updated":"2022-01-18 09:52:21.000000000","message":"Thank you Gorka. You are right but given the cinder bug referenced here, I don\u0027t think we can switch from `infinite\u0027 to something else, as when the bug hits it causes Cinder to stop creating volumes on LightOS even though there\u0027s plenty of space. Of course once the bug will be fixed we\u0027ll happily remove the `infinite\u0027 and report the correct value.","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"8516394cadd55b34784d36232a3c61993f1886f2","unresolved":true,"context_lines":[{"line_number":1053,"context_line":"        # It would be preferable to return"},{"line_number":1054,"context_line":"        # self.byte_to_gb(cluster_stats[\u0027freePhysicalStorage\u0027])"},{"line_number":1055,"context_line":"        # here but we return \u0027infinite\u0027 due to the Cinder bug described in"},{"line_number":1056,"context_line":"        # https://bugs.launchpad.net/cinder/+bug/1871371"},{"line_number":1057,"context_line":"        data[\u0027free_capacity_gb\u0027] \u003d \u0027infinite\u0027"},{"line_number":1058,"context_line":"        data[\u0027thin_provisioning_support\u0027] \u003d True"},{"line_number":1059,"context_line":"        data[\u0027compression\u0027] \u003d True"}],"source_content_type":"text/x-python","patch_set":10,"id":"407cb406_5445db9a","line":1056,"in_reply_to":"b33e5e58_7137328a","updated":"2022-01-14 09:04:26.000000000","message":"Can you explain why? Obviously we\u0027d rather not return infinite here but the bug described above is open and this is a reasonable (I hope) workaround.","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"d897ea51bc1c0f730501dc6e42b0e7c4499d4715","unresolved":true,"context_lines":[{"line_number":1068,"context_line":"        server_properties[\u0027uuid\u0027] \u003d self._get_lightos_uuid("},{"line_number":1069,"context_line":"            project_name, volume)"},{"line_number":1070,"context_line":"        server_properties[\u0027nqn\u0027] \u003d self.cluster.subsystemNQN"},{"line_number":1071,"context_line":""},{"line_number":1072,"context_line":"        lightos_targets \u003d server_properties[\u0027lightos_nodes\u0027]"},{"line_number":1073,"context_line":""},{"line_number":1074,"context_line":"        for target in self.cluster.targets.values():"},{"line_number":1075,"context_line":"            properties \u003d dict()"}],"source_content_type":"text/x-python","patch_set":10,"id":"5c05ad5f_de7654fe","line":1072,"range":{"start_line":1071,"start_character":0,"end_line":1072,"end_character":60},"updated":"2022-01-13 17:19:33.000000000","message":"nit: Easier to follow if we remove L1067, do:\n\n lightos_targets \u003d {}\n\nand then at the end assign it\n\n server_properties[\u0027lightos_nodes\u0027] \u003d lightos_targets","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"c09c1a5d19c1baec3a2aa1066363cac9a4274ab5","unresolved":false,"context_lines":[{"line_number":1068,"context_line":"        server_properties[\u0027uuid\u0027] \u003d self._get_lightos_uuid("},{"line_number":1069,"context_line":"            project_name, volume)"},{"line_number":1070,"context_line":"        server_properties[\u0027nqn\u0027] \u003d self.cluster.subsystemNQN"},{"line_number":1071,"context_line":""},{"line_number":1072,"context_line":"        lightos_targets \u003d server_properties[\u0027lightos_nodes\u0027]"},{"line_number":1073,"context_line":""},{"line_number":1074,"context_line":"        for target in self.cluster.targets.values():"},{"line_number":1075,"context_line":"            properties \u003d dict()"}],"source_content_type":"text/x-python","patch_set":10,"id":"13b933e2_cf595a19","line":1072,"range":{"start_line":1071,"start_character":0,"end_line":1072,"end_character":60},"in_reply_to":"5c05ad5f_de7654fe","updated":"2022-01-14 14:12:03.000000000","message":"Ack","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"d897ea51bc1c0f730501dc6e42b0e7c4499d4715","unresolved":true,"context_lines":[{"line_number":1076,"context_line":"            (data_address, data_port) \u003d target[\u0027nvmeEndpoint\u0027].split(\u0027:\u0027)"},{"line_number":1077,"context_line":""},{"line_number":1078,"context_line":"            properties[\u0027target_portal\u0027] \u003d data_address"},{"line_number":1079,"context_line":"            # properties[\u0027target_port\u0027] \u003d data_port"},{"line_number":1080,"context_line":"            properties[\u0027target_port\u0027] \u003d 8009"},{"line_number":1081,"context_line":"            properties[\u0027transport_type\u0027] \u003d \u0027tcp\u0027"},{"line_number":1082,"context_line":""},{"line_number":1083,"context_line":"            lightos_targets[data_address] \u003d properties"}],"source_content_type":"text/x-python","patch_set":10,"id":"c4a33fea_52dc3571","line":1080,"range":{"start_line":1079,"start_character":0,"end_line":1080,"end_character":44},"updated":"2022-01-13 17:19:33.000000000","message":"-1: What\u0027s with this?","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"c09c1a5d19c1baec3a2aa1066363cac9a4274ab5","unresolved":false,"context_lines":[{"line_number":1076,"context_line":"            (data_address, data_port) \u003d target[\u0027nvmeEndpoint\u0027].split(\u0027:\u0027)"},{"line_number":1077,"context_line":""},{"line_number":1078,"context_line":"            properties[\u0027target_portal\u0027] \u003d data_address"},{"line_number":1079,"context_line":"            # properties[\u0027target_port\u0027] \u003d data_port"},{"line_number":1080,"context_line":"            properties[\u0027target_port\u0027] \u003d 8009"},{"line_number":1081,"context_line":"            properties[\u0027transport_type\u0027] \u003d \u0027tcp\u0027"},{"line_number":1082,"context_line":""},{"line_number":1083,"context_line":"            lightos_targets[data_address] \u003d properties"}],"source_content_type":"text/x-python","patch_set":10,"id":"a0e70b39_dba576f0","line":1080,"range":{"start_line":1079,"start_character":0,"end_line":1080,"end_character":44},"in_reply_to":"8b646611_07cd486a","updated":"2022-01-14 14:12:03.000000000","message":"Ack","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"8516394cadd55b34784d36232a3c61993f1886f2","unresolved":true,"context_lines":[{"line_number":1076,"context_line":"            (data_address, data_port) \u003d target[\u0027nvmeEndpoint\u0027].split(\u0027:\u0027)"},{"line_number":1077,"context_line":""},{"line_number":1078,"context_line":"            properties[\u0027target_portal\u0027] \u003d data_address"},{"line_number":1079,"context_line":"            # properties[\u0027target_port\u0027] \u003d data_port"},{"line_number":1080,"context_line":"            properties[\u0027target_port\u0027] \u003d 8009"},{"line_number":1081,"context_line":"            properties[\u0027transport_type\u0027] \u003d \u0027tcp\u0027"},{"line_number":1082,"context_line":""},{"line_number":1083,"context_line":"            lightos_targets[data_address] \u003d properties"}],"source_content_type":"text/x-python","patch_set":10,"id":"8b646611_07cd486a","line":1080,"range":{"start_line":1079,"start_character":0,"end_line":1080,"end_character":44},"in_reply_to":"c4a33fea_52dc3571","updated":"2022-01-14 09:04:26.000000000","message":"I need to check if this is still used since we switch to the discovery-client, it may be a leftover. We\u0027ll fix.","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"d897ea51bc1c0f730501dc6e42b0e7c4499d4715","unresolved":true,"context_lines":[{"line_number":1206,"context_line":"            acl_to_remove)"},{"line_number":1207,"context_line":""},{"line_number":1208,"context_line":"    def update_volume_acl(self, func, project_name, lightos_volname, acl):"},{"line_number":1209,"context_line":"        # loop because we might run into concurrent updates to the volume"},{"line_number":1210,"context_line":"        end \u003d time.time() + self.logical_op_timeout"},{"line_number":1211,"context_line":"        first_iteration \u003d True"},{"line_number":1212,"context_line":"        while (time.time() \u003c end):"}],"source_content_type":"text/x-python","patch_set":10,"id":"c377a93c_8397db69","line":1209,"range":{"start_line":1209,"start_character":0,"end_line":1209,"end_character":73},"updated":"2022-01-13 17:19:33.000000000","message":"?: Who/when/how could be accessing it concurrently?","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"c09c1a5d19c1baec3a2aa1066363cac9a4274ab5","unresolved":false,"context_lines":[{"line_number":1206,"context_line":"            acl_to_remove)"},{"line_number":1207,"context_line":""},{"line_number":1208,"context_line":"    def update_volume_acl(self, func, project_name, lightos_volname, acl):"},{"line_number":1209,"context_line":"        # loop because we might run into concurrent updates to the volume"},{"line_number":1210,"context_line":"        end \u003d time.time() + self.logical_op_timeout"},{"line_number":1211,"context_line":"        first_iteration \u003d True"},{"line_number":1212,"context_line":"        while (time.time() \u003c end):"}],"source_content_type":"text/x-python","patch_set":10,"id":"b63ea81d_bb7e2862","line":1209,"range":{"start_line":1209,"start_character":0,"end_line":1209,"end_character":73},"in_reply_to":"554627bd_c81cad5d","updated":"2022-01-14 14:12:03.000000000","message":"Ack","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"8516394cadd55b34784d36232a3c61993f1886f2","unresolved":true,"context_lines":[{"line_number":1206,"context_line":"            acl_to_remove)"},{"line_number":1207,"context_line":""},{"line_number":1208,"context_line":"    def update_volume_acl(self, func, project_name, lightos_volname, acl):"},{"line_number":1209,"context_line":"        # loop because we might run into concurrent updates to the volume"},{"line_number":1210,"context_line":"        end \u003d time.time() + self.logical_op_timeout"},{"line_number":1211,"context_line":"        first_iteration \u003d True"},{"line_number":1212,"context_line":"        while (time.time() \u003c end):"}],"source_content_type":"text/x-python","patch_set":10,"id":"554627bd_c81cad5d","line":1209,"range":{"start_line":1209,"start_character":0,"end_line":1209,"end_character":73},"in_reply_to":"c377a93c_8397db69","updated":"2022-01-14 09:04:26.000000000","message":"As mentioned above, misleading comment. We\u0027ll fix.","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"d897ea51bc1c0f730501dc6e42b0e7c4499d4715","unresolved":true,"context_lines":[{"line_number":1472,"context_line":""},{"line_number":1473,"context_line":"        if not hostnqn:"},{"line_number":1474,"context_line":"            if force:"},{"line_number":1475,"context_line":"                LOG.debug("},{"line_number":1476,"context_line":"                    \u0027Terminating connection with extreme prejudice for \\"},{"line_number":1477,"context_line":"                    volume %s\u0027,"},{"line_number":1478,"context_line":"                    volume)"},{"line_number":1479,"context_line":"                return"},{"line_number":1480,"context_line":""},{"line_number":1481,"context_line":"            msg \u003d \u0027Connector (%s) did not return a hostnqn, aborting\u0027 % ("}],"source_content_type":"text/x-python","patch_set":10,"id":"05248e84_c91b9829","line":1478,"range":{"start_line":1475,"start_character":0,"end_line":1478,"end_character":27},"updated":"2022-01-13 17:19:33.000000000","message":"-1: This is misleading, as this does nothing.  Shouldn\u0027t, when there\u0027s no connector and it\u0027s forced, be disconnecting everything?","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"8516394cadd55b34784d36232a3c61993f1886f2","unresolved":true,"context_lines":[{"line_number":1472,"context_line":""},{"line_number":1473,"context_line":"        if not hostnqn:"},{"line_number":1474,"context_line":"            if force:"},{"line_number":1475,"context_line":"                LOG.debug("},{"line_number":1476,"context_line":"                    \u0027Terminating connection with extreme prejudice for \\"},{"line_number":1477,"context_line":"                    volume %s\u0027,"},{"line_number":1478,"context_line":"                    volume)"},{"line_number":1479,"context_line":"                return"},{"line_number":1480,"context_line":""},{"line_number":1481,"context_line":"            msg \u003d \u0027Connector (%s) did not return a hostnqn, aborting\u0027 % ("}],"source_content_type":"text/x-python","patch_set":10,"id":"08cac2e9_ba79fde4","line":1478,"range":{"start_line":1475,"start_character":0,"end_line":1478,"end_character":27},"in_reply_to":"05248e84_c91b9829","updated":"2022-01-14 09:04:26.000000000","message":"I think I saw this in some of the tempest tests but I don\u0027t recall that is signified a fatal error. In other words, I don\u0027t really know when this happens but the tests pass if we don\u0027t do anything here (the log is just for debugging to know it happened). What should be the correct operations here, if not \"do nothing\"?","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"c09c1a5d19c1baec3a2aa1066363cac9a4274ab5","unresolved":false,"context_lines":[{"line_number":1472,"context_line":""},{"line_number":1473,"context_line":"        if not hostnqn:"},{"line_number":1474,"context_line":"            if force:"},{"line_number":1475,"context_line":"                LOG.debug("},{"line_number":1476,"context_line":"                    \u0027Terminating connection with extreme prejudice for \\"},{"line_number":1477,"context_line":"                    volume %s\u0027,"},{"line_number":1478,"context_line":"                    volume)"},{"line_number":1479,"context_line":"                return"},{"line_number":1480,"context_line":""},{"line_number":1481,"context_line":"            msg \u003d \u0027Connector (%s) did not return a hostnqn, aborting\u0027 % ("}],"source_content_type":"text/x-python","patch_set":10,"id":"1ed74bdb_e267c144","line":1478,"range":{"start_line":1475,"start_character":0,"end_line":1478,"end_character":27},"in_reply_to":"08cac2e9_ba79fde4","updated":"2022-01-14 14:12:03.000000000","message":"Ack","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"56d46bdafa56c7c200476c62aa4a07825d93e5bb","unresolved":true,"context_lines":[{"line_number":1472,"context_line":""},{"line_number":1473,"context_line":"        if not hostnqn:"},{"line_number":1474,"context_line":"            if force:"},{"line_number":1475,"context_line":"                LOG.debug("},{"line_number":1476,"context_line":"                    \u0027Terminating connection with extreme prejudice for \\"},{"line_number":1477,"context_line":"                    volume %s\u0027,"},{"line_number":1478,"context_line":"                    volume)"},{"line_number":1479,"context_line":"                return"},{"line_number":1480,"context_line":""},{"line_number":1481,"context_line":"            msg \u003d \u0027Connector (%s) did not return a hostnqn, aborting\u0027 % ("}],"source_content_type":"text/x-python","patch_set":10,"id":"7fb89b5a_e7ce5862","line":1478,"range":{"start_line":1475,"start_character":0,"end_line":1478,"end_character":27},"in_reply_to":"1ed74bdb_e267c144","updated":"2022-01-17 17:59:36.000000000","message":"It should remove ALL the exports \u0026 ACLs for the given volume.","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"36b1ebe7dfece1eff46514be242ddc09c4997367","unresolved":false,"context_lines":[{"line_number":1472,"context_line":""},{"line_number":1473,"context_line":"        if not hostnqn:"},{"line_number":1474,"context_line":"            if force:"},{"line_number":1475,"context_line":"                LOG.debug("},{"line_number":1476,"context_line":"                    \u0027Terminating connection with extreme prejudice for \\"},{"line_number":1477,"context_line":"                    volume %s\u0027,"},{"line_number":1478,"context_line":"                    volume)"},{"line_number":1479,"context_line":"                return"},{"line_number":1480,"context_line":""},{"line_number":1481,"context_line":"            msg \u003d \u0027Connector (%s) did not return a hostnqn, aborting\u0027 % ("}],"source_content_type":"text/x-python","patch_set":10,"id":"e865dd4e_c8c75bbe","line":1478,"range":{"start_line":1475,"start_character":0,"end_line":1478,"end_character":27},"in_reply_to":"7fb89b5a_e7ce5862","updated":"2022-01-18 18:16:00.000000000","message":"Ack","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"d897ea51bc1c0f730501dc6e42b0e7c4499d4715","unresolved":true,"context_lines":[{"line_number":1478,"context_line":"                    volume)"},{"line_number":1479,"context_line":"                return"},{"line_number":1480,"context_line":""},{"line_number":1481,"context_line":"            msg \u003d \u0027Connector (%s) did not return a hostnqn, aborting\u0027 % ("},{"line_number":1482,"context_line":"                connector,)"},{"line_number":1483,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":1484,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"28e54804_f2057f49","line":1481,"range":{"start_line":1481,"start_character":42,"end_line":1481,"end_character":48},"updated":"2022-01-13 17:19:33.000000000","message":"nit: contain","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"8516394cadd55b34784d36232a3c61993f1886f2","unresolved":true,"context_lines":[{"line_number":1478,"context_line":"                    volume)"},{"line_number":1479,"context_line":"                return"},{"line_number":1480,"context_line":""},{"line_number":1481,"context_line":"            msg \u003d \u0027Connector (%s) did not return a hostnqn, aborting\u0027 % ("},{"line_number":1482,"context_line":"                connector,)"},{"line_number":1483,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":1484,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"98e517b3_1565eb75","line":1481,"range":{"start_line":1481,"start_character":42,"end_line":1481,"end_character":48},"in_reply_to":"28e54804_f2057f49","updated":"2022-01-14 09:04:26.000000000","message":"Thanks, we\u0027ll fix.","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"56d46bdafa56c7c200476c62aa4a07825d93e5bb","unresolved":false,"context_lines":[{"line_number":1478,"context_line":"                    volume)"},{"line_number":1479,"context_line":"                return"},{"line_number":1480,"context_line":""},{"line_number":1481,"context_line":"            msg \u003d \u0027Connector (%s) did not return a hostnqn, aborting\u0027 % ("},{"line_number":1482,"context_line":"                connector,)"},{"line_number":1483,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":1484,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"49a996ab_022cd343","line":1481,"range":{"start_line":1481,"start_character":42,"end_line":1481,"end_character":48},"in_reply_to":"2f2c507a_d7e38e6a","updated":"2022-01-17 17:59:36.000000000","message":"nit: Didn\u0027t update it ;-)","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"3d34d87a49da5c217c43628e2e10640e85be30f1","unresolved":false,"context_lines":[{"line_number":1478,"context_line":"                    volume)"},{"line_number":1479,"context_line":"                return"},{"line_number":1480,"context_line":""},{"line_number":1481,"context_line":"            msg \u003d \u0027Connector (%s) did not return a hostnqn, aborting\u0027 % ("},{"line_number":1482,"context_line":"                connector,)"},{"line_number":1483,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":1484,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"2f2c507a_d7e38e6a","line":1481,"range":{"start_line":1481,"start_character":42,"end_line":1481,"end_character":48},"in_reply_to":"98e517b3_1565eb75","updated":"2022-01-14 10:43:18.000000000","message":"Ack","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"d897ea51bc1c0f730501dc6e42b0e7c4499d4715","unresolved":true,"context_lines":[{"line_number":1484,"context_line":""},{"line_number":1485,"context_line":"        lightos_volname \u003d self._lightos_volname(volume)"},{"line_number":1486,"context_line":"        project_name \u003d self._get_lightos_project_name("},{"line_number":1487,"context_line":"            volume[\"volume_type_id\"])"},{"line_number":1488,"context_line":"        success \u003d self.remove_volume_acl(project_name, volume, hostnqn)"},{"line_number":1489,"context_line":"        if not success or not self._wait_for_volume_acl("},{"line_number":1490,"context_line":"                project_name, lightos_volname, hostnqn, False):"}],"source_content_type":"text/x-python","patch_set":10,"id":"e39f011e_51514a8c","line":1487,"range":{"start_line":1487,"start_character":12,"end_line":1487,"end_character":36},"updated":"2022-01-13 17:19:33.000000000","message":"-1: We should be using attributes whenever possible:\n\n  volume.volume_type_id","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"3d34d87a49da5c217c43628e2e10640e85be30f1","unresolved":false,"context_lines":[{"line_number":1484,"context_line":""},{"line_number":1485,"context_line":"        lightos_volname \u003d self._lightos_volname(volume)"},{"line_number":1486,"context_line":"        project_name \u003d self._get_lightos_project_name("},{"line_number":1487,"context_line":"            volume[\"volume_type_id\"])"},{"line_number":1488,"context_line":"        success \u003d self.remove_volume_acl(project_name, volume, hostnqn)"},{"line_number":1489,"context_line":"        if not success or not self._wait_for_volume_acl("},{"line_number":1490,"context_line":"                project_name, lightos_volname, hostnqn, False):"}],"source_content_type":"text/x-python","patch_set":10,"id":"a3fd369c_6ac2d0b8","line":1487,"range":{"start_line":1487,"start_character":12,"end_line":1487,"end_character":36},"in_reply_to":"0ae90c33_33e89598","updated":"2022-01-14 10:43:18.000000000","message":"Done","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"8516394cadd55b34784d36232a3c61993f1886f2","unresolved":true,"context_lines":[{"line_number":1484,"context_line":""},{"line_number":1485,"context_line":"        lightos_volname \u003d self._lightos_volname(volume)"},{"line_number":1486,"context_line":"        project_name \u003d self._get_lightos_project_name("},{"line_number":1487,"context_line":"            volume[\"volume_type_id\"])"},{"line_number":1488,"context_line":"        success \u003d self.remove_volume_acl(project_name, volume, hostnqn)"},{"line_number":1489,"context_line":"        if not success or not self._wait_for_volume_acl("},{"line_number":1490,"context_line":"                project_name, lightos_volname, hostnqn, False):"}],"source_content_type":"text/x-python","patch_set":10,"id":"0ae90c33_33e89598","line":1487,"range":{"start_line":1487,"start_character":12,"end_line":1487,"end_character":36},"in_reply_to":"e39f011e_51514a8c","updated":"2022-01-14 09:04:26.000000000","message":"ack","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"d897ea51bc1c0f730501dc6e42b0e7c4499d4715","unresolved":true,"context_lines":[{"line_number":1507,"context_line":"                \"Specifies the number of replicas to create for the \\"},{"line_number":1508,"context_line":"                LightOS volume.\"),"},{"line_number":1509,"context_line":"            \"integer\","},{"line_number":1510,"context_line":"            minimum\u003d1,"},{"line_number":1511,"context_line":"            default\u003d3)"},{"line_number":1512,"context_line":""},{"line_number":1513,"context_line":"        return properties, \u0027lightos\u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"e02e852a_2f578184","line":1510,"updated":"2022-01-13 17:19:33.000000000","message":"-1: We should add maximum as well, right?\n \n  maximum\u003d3,","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"3d34d87a49da5c217c43628e2e10640e85be30f1","unresolved":false,"context_lines":[{"line_number":1507,"context_line":"                \"Specifies the number of replicas to create for the \\"},{"line_number":1508,"context_line":"                LightOS volume.\"),"},{"line_number":1509,"context_line":"            \"integer\","},{"line_number":1510,"context_line":"            minimum\u003d1,"},{"line_number":1511,"context_line":"            default\u003d3)"},{"line_number":1512,"context_line":""},{"line_number":1513,"context_line":"        return properties, \u0027lightos\u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"348113f4_c663287b","line":1510,"in_reply_to":"0395e74a_9a904c4f","updated":"2022-01-14 10:43:18.000000000","message":"Ack","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"8516394cadd55b34784d36232a3c61993f1886f2","unresolved":true,"context_lines":[{"line_number":1507,"context_line":"                \"Specifies the number of replicas to create for the \\"},{"line_number":1508,"context_line":"                LightOS volume.\"),"},{"line_number":1509,"context_line":"            \"integer\","},{"line_number":1510,"context_line":"            minimum\u003d1,"},{"line_number":1511,"context_line":"            default\u003d3)"},{"line_number":1512,"context_line":""},{"line_number":1513,"context_line":"        return properties, \u0027lightos\u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"0395e74a_9a904c4f","line":1510,"in_reply_to":"e02e852a_2f578184","updated":"2022-01-14 09:04:26.000000000","message":"For current versions of LightOS, yes, it\u0027s 1, 2, or 3 replicas per volume. We\u0027ll fix.","commit_id":"7ffb9d8224f8bcf31d35c132c7a2092e5f74ed62"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"56d46bdafa56c7c200476c62aa4a07825d93e5bb","unresolved":true,"context_lines":[{"line_number":44,"context_line":"urllib3.disable_warnings()"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"lightos_opts \u003d ["},{"line_number":47,"context_line":"    cfg.StrOpt(\u0027lightos_api_address\u0027,"},{"line_number":48,"context_line":"               default\u003dNone,"},{"line_number":49,"context_line":"               help\u003d\u0027The IP addresses of the LightOS API servers separated\u0027"},{"line_number":50,"context_line":"               \u0027 by commas without spaces\u0027),"},{"line_number":51,"context_line":"    cfg.PortOpt(\u0027lightos_api_port\u0027,"},{"line_number":52,"context_line":"                default\u003d\u0027443\u0027,"},{"line_number":53,"context_line":"                help\u003d\u0027The TCP/IP port at which the LightOS API\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"16f14273_ae06aee0","line":50,"range":{"start_line":47,"start_character":0,"end_line":50,"end_character":44},"updated":"2022-01-17 17:59:36.000000000","message":"nit: I missed this before, but we should be using cfg.ListOpt instead of StrOpt. That way Oslo Config will automatically convert to a Python list from a comma separated elements.","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b0fee75613ed5e061916ae4b4a4a12945bbbccf8","unresolved":true,"context_lines":[{"line_number":44,"context_line":"urllib3.disable_warnings()"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"lightos_opts \u003d ["},{"line_number":47,"context_line":"    cfg.StrOpt(\u0027lightos_api_address\u0027,"},{"line_number":48,"context_line":"               default\u003dNone,"},{"line_number":49,"context_line":"               help\u003d\u0027The IP addresses of the LightOS API servers separated\u0027"},{"line_number":50,"context_line":"               \u0027 by commas without spaces\u0027),"},{"line_number":51,"context_line":"    cfg.PortOpt(\u0027lightos_api_port\u0027,"},{"line_number":52,"context_line":"                default\u003d\u0027443\u0027,"},{"line_number":53,"context_line":"                help\u003d\u0027The TCP/IP port at which the LightOS API\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"83fcccb5_0786f9e8","line":50,"range":{"start_line":47,"start_character":0,"end_line":50,"end_character":44},"in_reply_to":"16f14273_ae06aee0","updated":"2022-01-18 00:13:54.000000000","message":"Additionally, you can use item_type\u003dcfg.types.IPAddress() to control what kind of items are allowed in the list.\n\nsee: https://docs.openstack.org/oslo.config/latest/reference/api/oslo_config.html#oslo_config.types.List\nhttps://docs.openstack.org/oslo.config/latest/reference/api/oslo_config.html#oslo_config.types.IPAddress","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"2644dcdb17096b43f604c582357cec827061bfd2","unresolved":false,"context_lines":[{"line_number":44,"context_line":"urllib3.disable_warnings()"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"lightos_opts \u003d ["},{"line_number":47,"context_line":"    cfg.StrOpt(\u0027lightos_api_address\u0027,"},{"line_number":48,"context_line":"               default\u003dNone,"},{"line_number":49,"context_line":"               help\u003d\u0027The IP addresses of the LightOS API servers separated\u0027"},{"line_number":50,"context_line":"               \u0027 by commas without spaces\u0027),"},{"line_number":51,"context_line":"    cfg.PortOpt(\u0027lightos_api_port\u0027,"},{"line_number":52,"context_line":"                default\u003d\u0027443\u0027,"},{"line_number":53,"context_line":"                help\u003d\u0027The TCP/IP port at which the LightOS API\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"905aea7f_a3da77da","line":50,"range":{"start_line":47,"start_character":0,"end_line":50,"end_character":44},"in_reply_to":"83fcccb5_0786f9e8","updated":"2022-01-18 18:19:17.000000000","message":"Ack","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"56d46bdafa56c7c200476c62aa4a07825d93e5bb","unresolved":true,"context_lines":[{"line_number":60,"context_line":"                    \u0027 the LightOS cluster.\u0027"},{"line_number":61,"context_line":"                    \u0027 Keep this parameter clear if the cluster is installed\u0027"},{"line_number":62,"context_line":"                    \u0027 with multi-tenancy disabled.\u0027),"},{"line_number":63,"context_line":"    cfg.StrOpt(\u0027lightos_snapshotname_prefix\u0027,"},{"line_number":64,"context_line":"               default\u003d\u0027openstack_\u0027,"},{"line_number":65,"context_line":"               help\u003d\u0027This prefix is used for constructing LightOS\u0027"},{"line_number":66,"context_line":"                    \u0027 snapshot names.\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"9b4905a8_4cc1c665","line":63,"range":{"start_line":63,"start_character":16,"end_line":63,"end_character":43},"updated":"2022-01-17 17:59:36.000000000","message":"-1: I believe this is no longer used and can be removed.","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"2644dcdb17096b43f604c582357cec827061bfd2","unresolved":false,"context_lines":[{"line_number":60,"context_line":"                    \u0027 the LightOS cluster.\u0027"},{"line_number":61,"context_line":"                    \u0027 Keep this parameter clear if the cluster is installed\u0027"},{"line_number":62,"context_line":"                    \u0027 with multi-tenancy disabled.\u0027),"},{"line_number":63,"context_line":"    cfg.StrOpt(\u0027lightos_snapshotname_prefix\u0027,"},{"line_number":64,"context_line":"               default\u003d\u0027openstack_\u0027,"},{"line_number":65,"context_line":"               help\u003d\u0027This prefix is used for constructing LightOS\u0027"},{"line_number":66,"context_line":"                    \u0027 snapshot names.\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"a60c6e2e_f6852295","line":63,"range":{"start_line":63,"start_character":16,"end_line":63,"end_character":43},"in_reply_to":"8d9327fe_6fa99cfe","updated":"2022-01-18 18:19:17.000000000","message":"Ack","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"36b1ebe7dfece1eff46514be242ddc09c4997367","unresolved":false,"context_lines":[{"line_number":60,"context_line":"                    \u0027 the LightOS cluster.\u0027"},{"line_number":61,"context_line":"                    \u0027 Keep this parameter clear if the cluster is installed\u0027"},{"line_number":62,"context_line":"                    \u0027 with multi-tenancy disabled.\u0027),"},{"line_number":63,"context_line":"    cfg.StrOpt(\u0027lightos_snapshotname_prefix\u0027,"},{"line_number":64,"context_line":"               default\u003d\u0027openstack_\u0027,"},{"line_number":65,"context_line":"               help\u003d\u0027This prefix is used for constructing LightOS\u0027"},{"line_number":66,"context_line":"                    \u0027 snapshot names.\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"0967194e_cf122560","line":63,"range":{"start_line":63,"start_character":16,"end_line":63,"end_character":43},"in_reply_to":"8d9327fe_6fa99cfe","updated":"2022-01-18 18:16:00.000000000","message":"Yes, it\u0027s gone now.","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"9c5ff77a9a6e94a3b202df414ae7b424dc29e235","unresolved":true,"context_lines":[{"line_number":60,"context_line":"                    \u0027 the LightOS cluster.\u0027"},{"line_number":61,"context_line":"                    \u0027 Keep this parameter clear if the cluster is installed\u0027"},{"line_number":62,"context_line":"                    \u0027 with multi-tenancy disabled.\u0027),"},{"line_number":63,"context_line":"    cfg.StrOpt(\u0027lightos_snapshotname_prefix\u0027,"},{"line_number":64,"context_line":"               default\u003d\u0027openstack_\u0027,"},{"line_number":65,"context_line":"               help\u003d\u0027This prefix is used for constructing LightOS\u0027"},{"line_number":66,"context_line":"                    \u0027 snapshot names.\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"8d9327fe_6fa99cfe","line":63,"range":{"start_line":63,"start_character":16,"end_line":63,"end_character":43},"in_reply_to":"9b4905a8_4cc1c665","updated":"2022-01-17 18:51:23.000000000","message":"Agreed - this is showing up in your configuration page because it is not removed from here.","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"56d46bdafa56c7c200476c62aa4a07825d93e5bb","unresolved":true,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def _init_api_servers(self) -\u003e Dict[int, Dict]:"},{"line_number":108,"context_line":"        if not self.conf.lightos_api_address or \\"},{"line_number":109,"context_line":"                len(self.conf.lightos_api_address) \u003d\u003d 0:"},{"line_number":110,"context_line":"            raise exception.InvalidParameterValue("},{"line_number":111,"context_line":"                message\u003d\"must provide lightos_api_address\")"},{"line_number":112,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"82e15ffb_9233fdf7","line":109,"range":{"start_line":109,"start_character":0,"end_line":109,"end_character":56},"updated":"2022-01-17 17:59:36.000000000","message":"nit: If we make the change on L47 we can remove this part of the condition.","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"2644dcdb17096b43f604c582357cec827061bfd2","unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def _init_api_servers(self) -\u003e Dict[int, Dict]:"},{"line_number":108,"context_line":"        if not self.conf.lightos_api_address or \\"},{"line_number":109,"context_line":"                len(self.conf.lightos_api_address) \u003d\u003d 0:"},{"line_number":110,"context_line":"            raise exception.InvalidParameterValue("},{"line_number":111,"context_line":"                message\u003d\"must provide lightos_api_address\")"},{"line_number":112,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"69df8b92_d27d1e9f","line":109,"range":{"start_line":109,"start_character":0,"end_line":109,"end_character":56},"in_reply_to":"82e15ffb_9233fdf7","updated":"2022-01-18 18:19:17.000000000","message":"Ack","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"56d46bdafa56c7c200476c62aa4a07825d93e5bb","unresolved":true,"context_lines":[{"line_number":110,"context_line":"            raise exception.InvalidParameterValue("},{"line_number":111,"context_line":"                message\u003d\"must provide lightos_api_address\")"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        hosts \u003d [host.strip()"},{"line_number":114,"context_line":"                 for host in self.conf.lightos_api_address.split(\u0027,\u0027)]"},{"line_number":115,"context_line":"        # Need to verify if hosts is real IP lists or not"},{"line_number":116,"context_line":"        # And verify that port is in range"},{"line_number":117,"context_line":"        apiservers: Dict[int, Dict] \u003d {}"}],"source_content_type":"text/x-python","patch_set":13,"id":"5670694c_2c5bc915","line":114,"range":{"start_line":113,"start_character":0,"end_line":114,"end_character":70},"updated":"2022-01-17 17:59:36.000000000","message":"If we make the change on L47 we don\u0027t need to do this, Oslo Config does it for us.","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"2644dcdb17096b43f604c582357cec827061bfd2","unresolved":false,"context_lines":[{"line_number":110,"context_line":"            raise exception.InvalidParameterValue("},{"line_number":111,"context_line":"                message\u003d\"must provide lightos_api_address\")"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        hosts \u003d [host.strip()"},{"line_number":114,"context_line":"                 for host in self.conf.lightos_api_address.split(\u0027,\u0027)]"},{"line_number":115,"context_line":"        # Need to verify if hosts is real IP lists or not"},{"line_number":116,"context_line":"        # And verify that port is in range"},{"line_number":117,"context_line":"        apiservers: Dict[int, Dict] \u003d {}"}],"source_content_type":"text/x-python","patch_set":13,"id":"1bcc779f_743faed6","line":114,"range":{"start_line":113,"start_character":0,"end_line":114,"end_character":70},"in_reply_to":"5670694c_2c5bc915","updated":"2022-01-18 18:19:17.000000000","message":"Ack","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"56d46bdafa56c7c200476c62aa4a07825d93e5bb","unresolved":true,"context_lines":[{"line_number":114,"context_line":"                 for host in self.conf.lightos_api_address.split(\u0027,\u0027)]"},{"line_number":115,"context_line":"        # Need to verify if hosts is real IP lists or not"},{"line_number":116,"context_line":"        # And verify that port is in range"},{"line_number":117,"context_line":"        apiservers: Dict[int, Dict] \u003d {}"},{"line_number":118,"context_line":"        for server_idx, api_address in enumerate(hosts):"},{"line_number":119,"context_line":"            apiservers[server_idx] \u003d dict("},{"line_number":120,"context_line":"                api_address\u003dapi_address,"},{"line_number":121,"context_line":"                api_port\u003d(str(self.conf.lightos_api_port)))"},{"line_number":122,"context_line":"        return apiservers"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def _generate_lightos_cmd(self, cmd, **kwargs):"}],"source_content_type":"text/x-python","patch_set":13,"id":"ab5a9aec_4cf8a1ec","line":121,"range":{"start_line":117,"start_character":0,"end_line":121,"end_character":59},"updated":"2022-01-17 17:59:36.000000000","message":"nit: We can use dict comprehension to make this simpler\n        apiservers: Dict[int, Dict] \u003d {\n            dict(api_address\u003dapi_address,\n                 api_port\u003d(str(self.conf.lightos_api_port)))\n        }\n\nWe could also use apiservers.append instead of enumerate and using the index","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"2644dcdb17096b43f604c582357cec827061bfd2","unresolved":false,"context_lines":[{"line_number":114,"context_line":"                 for host in self.conf.lightos_api_address.split(\u0027,\u0027)]"},{"line_number":115,"context_line":"        # Need to verify if hosts is real IP lists or not"},{"line_number":116,"context_line":"        # And verify that port is in range"},{"line_number":117,"context_line":"        apiservers: Dict[int, Dict] \u003d {}"},{"line_number":118,"context_line":"        for server_idx, api_address in enumerate(hosts):"},{"line_number":119,"context_line":"            apiservers[server_idx] \u003d dict("},{"line_number":120,"context_line":"                api_address\u003dapi_address,"},{"line_number":121,"context_line":"                api_port\u003d(str(self.conf.lightos_api_port)))"},{"line_number":122,"context_line":"        return apiservers"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def _generate_lightos_cmd(self, cmd, **kwargs):"}],"source_content_type":"text/x-python","patch_set":13,"id":"1b5613b4_0798bdf1","line":121,"range":{"start_line":117,"start_character":0,"end_line":121,"end_character":59},"in_reply_to":"ab5a9aec_4cf8a1ec","updated":"2022-01-18 18:19:17.000000000","message":"Ack","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b0fee75613ed5e061916ae4b4a4a12945bbbccf8","unresolved":true,"context_lines":[{"line_number":134,"context_line":"        # \u0027command\u0027: (method, API_URL, {optional parameters})"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        # API V2 common commands"},{"line_number":137,"context_line":"        lightos_commands \u003d {"},{"line_number":138,"context_line":"            # cluster operations,"},{"line_number":139,"context_line":"            \u0027get_cluster_info\u0027: (\u0027GET\u0027,"},{"line_number":140,"context_line":"                                 \u0027/api/v2/clusterinfo\u0027, {}),"}],"source_content_type":"text/x-python","patch_set":13,"id":"9749bc8b_dc2e6754","line":137,"range":{"start_line":137,"start_character":8,"end_line":137,"end_character":24},"updated":"2022-01-18 00:13:54.000000000","message":"-1: I believe that this dict will be regenerated every time we call the lightos API.  We should probably generate it in the __init__ function instead.  The Zadara driver had a similar problem, you can take a look at cinder/volume/drivers/zadara/common.py to see how they handled it.","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"8c508f1e54eeb4bee23a0cd86a7760b16662c29a","unresolved":true,"context_lines":[{"line_number":134,"context_line":"        # \u0027command\u0027: (method, API_URL, {optional parameters})"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        # API V2 common commands"},{"line_number":137,"context_line":"        lightos_commands \u003d {"},{"line_number":138,"context_line":"            # cluster operations,"},{"line_number":139,"context_line":"            \u0027get_cluster_info\u0027: (\u0027GET\u0027,"},{"line_number":140,"context_line":"                                 \u0027/api/v2/clusterinfo\u0027, {}),"}],"source_content_type":"text/x-python","patch_set":13,"id":"9c6bc5e8_2c7dc83f","line":137,"range":{"start_line":137,"start_character":8,"end_line":137,"end_character":24},"in_reply_to":"93c20eb4_56168193","updated":"2022-01-25 23:39:25.000000000","message":"I\u0027m OK with a followup.  Zadara solved the kwargs problem by making it a class attribute consisting of a dict of lambdas [0], that way you can still pass the kwargs in similar to what you do now.  It\u0027s probably better than creating a separate function for each command, although that\u0027s another way to go.\n\n[0] https://opendev.org/openstack/cinder/src/commit/8dbf72a014a964358d6b0add88debface2b978c6/cinder/volume/drivers/zadara/common.py#L120-L154","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"a113666b45da4737ca916973fa2865f2ecf43c9a","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        # \u0027command\u0027: (method, API_URL, {optional parameters})"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        # API V2 common commands"},{"line_number":137,"context_line":"        lightos_commands \u003d {"},{"line_number":138,"context_line":"            # cluster operations,"},{"line_number":139,"context_line":"            \u0027get_cluster_info\u0027: (\u0027GET\u0027,"},{"line_number":140,"context_line":"                                 \u0027/api/v2/clusterinfo\u0027, {}),"}],"source_content_type":"text/x-python","patch_set":13,"id":"93c20eb4_56168193","line":137,"range":{"start_line":137,"start_character":8,"end_line":137,"end_character":24},"in_reply_to":"9749bc8b_dc2e6754","updated":"2022-01-18 13:53:57.000000000","message":"Thanks for the feedback Brian. We took another look at it. The problem with generating it once on init is that the dictionary is actually constructed with the caller\u0027s provided kwargs already included. No argument this is a roundabout way of doing things but it is tested and works... We will refactor and split it to construct each cmd separately but prefer to not make such small but subtle changes at this stage. Once the driver is merged we\u0027ll refactor and optimize the cmd generation as a separate patch.","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"6bf113f6b670baa3577e296e9f1a36547b90aa30","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        # \u0027command\u0027: (method, API_URL, {optional parameters})"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        # API V2 common commands"},{"line_number":137,"context_line":"        lightos_commands \u003d {"},{"line_number":138,"context_line":"            # cluster operations,"},{"line_number":139,"context_line":"            \u0027get_cluster_info\u0027: (\u0027GET\u0027,"},{"line_number":140,"context_line":"                                 \u0027/api/v2/clusterinfo\u0027, {}),"}],"source_content_type":"text/x-python","patch_set":13,"id":"fb1dc1f0_bd31397b","line":137,"range":{"start_line":137,"start_character":8,"end_line":137,"end_character":24},"in_reply_to":"9c6bc5e8_2c7dc83f","updated":"2022-01-30 09:25:41.000000000","message":"Thanks for the pointer. Yuval, FYI. We have added it to the post-merge list so I\u0027m resolving this for now.","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"56d46bdafa56c7c200476c62aa4a07825d93e5bb","unresolved":true,"context_lines":[{"line_number":490,"context_line":"        return CONF.snapshot_name_template % snapshot_id"},{"line_number":491,"context_line":""},{"line_number":492,"context_line":"    def _interm_snapshotname(self, snapshot):"},{"line_number":493,"context_line":"        prefix \u003d \"for_clone_\""},{"line_number":494,"context_line":"        id \u003d snapshot[\u0027id\u0027]"},{"line_number":495,"context_line":"        return \u0027%s%s\u0027 % (prefix, id)"},{"line_number":496,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"53e6a1ba_a300c876","line":493,"updated":"2022-01-17 17:59:36.000000000","message":"nit: Maybe use a global constant like you did with LIGHTOS","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"2644dcdb17096b43f604c582357cec827061bfd2","unresolved":false,"context_lines":[{"line_number":490,"context_line":"        return CONF.snapshot_name_template % snapshot_id"},{"line_number":491,"context_line":""},{"line_number":492,"context_line":"    def _interm_snapshotname(self, snapshot):"},{"line_number":493,"context_line":"        prefix \u003d \"for_clone_\""},{"line_number":494,"context_line":"        id \u003d snapshot[\u0027id\u0027]"},{"line_number":495,"context_line":"        return \u0027%s%s\u0027 % (prefix, id)"},{"line_number":496,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"16becc87_1c165941","line":493,"in_reply_to":"53e6a1ba_a300c876","updated":"2022-01-18 18:19:17.000000000","message":"Ack","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"56d46bdafa56c7c200476c62aa4a07825d93e5bb","unresolved":true,"context_lines":[{"line_number":1326,"context_line":"                    \"Successfully detected that snapshot %s was deleted.\","},{"line_number":1327,"context_line":"                    snapshot_name)"},{"line_number":1328,"context_line":"                return True"},{"line_number":1329,"context_line":"            else:"},{"line_number":1330,"context_line":"                LOG.warn(\"Snapshot %s was not deleted. It is in state %s.\","},{"line_number":1331,"context_line":"                         snapshot_name, state)"},{"line_number":1332,"context_line":"                return False"}],"source_content_type":"text/x-python","patch_set":13,"id":"76517988_87ea3303","line":1329,"range":{"start_line":1329,"start_character":12,"end_line":1329,"end_character":17},"updated":"2022-01-17 17:59:36.000000000","message":"nit: No need for the else (L1329), since we have a return on the previous line. We can just have L1330-L1332.","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"2644dcdb17096b43f604c582357cec827061bfd2","unresolved":false,"context_lines":[{"line_number":1326,"context_line":"                    \"Successfully detected that snapshot %s was deleted.\","},{"line_number":1327,"context_line":"                    snapshot_name)"},{"line_number":1328,"context_line":"                return True"},{"line_number":1329,"context_line":"            else:"},{"line_number":1330,"context_line":"                LOG.warn(\"Snapshot %s was not deleted. It is in state %s.\","},{"line_number":1331,"context_line":"                         snapshot_name, state)"},{"line_number":1332,"context_line":"                return False"}],"source_content_type":"text/x-python","patch_set":13,"id":"6464f4ab_de7c651d","line":1329,"range":{"start_line":1329,"start_character":12,"end_line":1329,"end_character":17},"in_reply_to":"76517988_87ea3303","updated":"2022-01-18 18:19:17.000000000","message":"Ack","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"56d46bdafa56c7c200476c62aa4a07825d93e5bb","unresolved":true,"context_lines":[{"line_number":1330,"context_line":"                LOG.warn(\"Snapshot %s was not deleted. It is in state %s.\","},{"line_number":1331,"context_line":"                         snapshot_name, state)"},{"line_number":1332,"context_line":"                return False"},{"line_number":1333,"context_line":"        else:"},{"line_number":1334,"context_line":"            LOG.warn("},{"line_number":1335,"context_line":"                \"Request to delete snapshot %s\""},{"line_number":1336,"context_line":"                \" was rejected with status code %s.\","}],"source_content_type":"text/x-python","patch_set":13,"id":"7754d0ca_f72dfb8b","line":1333,"updated":"2022-01-17 17:59:36.000000000","message":"nit: No need for the else (L1333), since all cases from the if part will result in a return.","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"2644dcdb17096b43f604c582357cec827061bfd2","unresolved":false,"context_lines":[{"line_number":1330,"context_line":"                LOG.warn(\"Snapshot %s was not deleted. It is in state %s.\","},{"line_number":1331,"context_line":"                         snapshot_name, state)"},{"line_number":1332,"context_line":"                return False"},{"line_number":1333,"context_line":"        else:"},{"line_number":1334,"context_line":"            LOG.warn("},{"line_number":1335,"context_line":"                \"Request to delete snapshot %s\""},{"line_number":1336,"context_line":"                \" was rejected with status code %s.\","}],"source_content_type":"text/x-python","patch_set":13,"id":"efa4fc7f_5900b109","line":1333,"in_reply_to":"7754d0ca_f72dfb8b","updated":"2022-01-18 18:19:17.000000000","message":"Ack","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"56d46bdafa56c7c200476c62aa4a07825d93e5bb","unresolved":true,"context_lines":[{"line_number":1384,"context_line":"                    \u0027Terminating connection with extreme prejudice for \\"},{"line_number":1385,"context_line":"                    volume %s\u0027,"},{"line_number":1386,"context_line":"                    volume)"},{"line_number":1387,"context_line":"                return"},{"line_number":1388,"context_line":""},{"line_number":1389,"context_line":"            msg \u003d \u0027Connector (%s) did not return a hostnqn, aborting\u0027 % ("},{"line_number":1390,"context_line":"                connector,)"}],"source_content_type":"text/x-python","patch_set":13,"id":"f0a91d97_38d5aca1","line":1387,"updated":"2022-01-17 17:59:36.000000000","message":"-1: This should remove ALL export \u0026 ACLs for the given volume.","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"36b1ebe7dfece1eff46514be242ddc09c4997367","unresolved":false,"context_lines":[{"line_number":1384,"context_line":"                    \u0027Terminating connection with extreme prejudice for \\"},{"line_number":1385,"context_line":"                    volume %s\u0027,"},{"line_number":1386,"context_line":"                    volume)"},{"line_number":1387,"context_line":"                return"},{"line_number":1388,"context_line":""},{"line_number":1389,"context_line":"            msg \u003d \u0027Connector (%s) did not return a hostnqn, aborting\u0027 % ("},{"line_number":1390,"context_line":"                connector,)"}],"source_content_type":"text/x-python","patch_set":13,"id":"49651d62_6fe6a75b","line":1387,"in_reply_to":"7672ad56_52c85946","updated":"2022-01-18 18:16:00.000000000","message":"Ack","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"9757272d83f462242324444c6031655f2f1de73e","unresolved":true,"context_lines":[{"line_number":1384,"context_line":"                    \u0027Terminating connection with extreme prejudice for \\"},{"line_number":1385,"context_line":"                    volume %s\u0027,"},{"line_number":1386,"context_line":"                    volume)"},{"line_number":1387,"context_line":"                return"},{"line_number":1388,"context_line":""},{"line_number":1389,"context_line":"            msg \u003d \u0027Connector (%s) did not return a hostnqn, aborting\u0027 % ("},{"line_number":1390,"context_line":"                connector,)"}],"source_content_type":"text/x-python","patch_set":13,"id":"7672ad56_52c85946","line":1387,"in_reply_to":"ee122ade_7bb412d7","updated":"2022-01-18 10:04:39.000000000","message":"Never mind, in this case we can remove all ACLs for the volume and that is probably a better default than leaving dangling ACLs. Thanks to Sagi G. for the proposal.","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"38de34bafe60782ebe039dc4a91f0e54cd859600","unresolved":true,"context_lines":[{"line_number":1384,"context_line":"                    \u0027Terminating connection with extreme prejudice for \\"},{"line_number":1385,"context_line":"                    volume %s\u0027,"},{"line_number":1386,"context_line":"                    volume)"},{"line_number":1387,"context_line":"                return"},{"line_number":1388,"context_line":""},{"line_number":1389,"context_line":"            msg \u003d \u0027Connector (%s) did not return a hostnqn, aborting\u0027 % ("},{"line_number":1390,"context_line":"                connector,)"}],"source_content_type":"text/x-python","patch_set":13,"id":"ee122ade_7bb412d7","line":1387,"in_reply_to":"f0a91d97_38d5aca1","updated":"2022-01-18 09:52:21.000000000","message":"Thanks, Gorka, but I must be missing something. The only way we currently know which ACL to remove for the given volume is through the connector. If no connector, we don\u0027t have the ACL... We could hook each ACL we add to the volume object when we add it so that it will be available here, but is that really the intent?","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"37c8b6cc98b24454beaa71b8e4d1ee86f8df114d","unresolved":true,"context_lines":[{"line_number":387,"context_line":""},{"line_number":388,"context_line":"    @classmethod"},{"line_number":389,"context_line":"    def get_driver_options(cls):"},{"line_number":390,"context_line":"        return lightos_opts"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"    def create_cloned_volume(self, volume, src_vref):"},{"line_number":393,"context_line":"        \"\"\"Creates a clone of the specified volume."}],"source_content_type":"text/x-python","patch_set":16,"id":"d27174cc_3b85a440","line":390,"updated":"2022-01-20 13:18:37.000000000","message":"-1: The driver is also using configuration option driver_ssl_cert_verify and others, so it should be returning it.\n\n    @classmethod\n    def get_driver_options(cls):\n        additional_opts \u003d cls._get_oslo_driver_opts(\n            \u0027driver_ssl_cert_verify\u0027, \u0027volume_name_template\u0027, \n            \u0027snapshot_name_template\u0027, \u0027reserved_percentage\u0027)\n        return lightos_opts + additional_opts","commit_id":"4cc67357c17a72aa5fe42816df4f34d574bf1da8"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"d10d7cf7ff4f8061b8db603b7f750ecd04eef483","unresolved":false,"context_lines":[{"line_number":387,"context_line":""},{"line_number":388,"context_line":"    @classmethod"},{"line_number":389,"context_line":"    def get_driver_options(cls):"},{"line_number":390,"context_line":"        return lightos_opts"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"    def create_cloned_volume(self, volume, src_vref):"},{"line_number":393,"context_line":"        \"\"\"Creates a clone of the specified volume."}],"source_content_type":"text/x-python","patch_set":16,"id":"c845f5b6_6c3c8779","line":390,"in_reply_to":"6adc6490_392c3e85","updated":"2022-01-20 15:13:01.000000000","message":"Ack","commit_id":"4cc67357c17a72aa5fe42816df4f34d574bf1da8"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"bc688ca08f0f112dbfe845a343fc50d7fc07b4d0","unresolved":false,"context_lines":[{"line_number":387,"context_line":""},{"line_number":388,"context_line":"    @classmethod"},{"line_number":389,"context_line":"    def get_driver_options(cls):"},{"line_number":390,"context_line":"        return lightos_opts"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"    def create_cloned_volume(self, volume, src_vref):"},{"line_number":393,"context_line":"        \"\"\"Creates a clone of the specified volume."}],"source_content_type":"text/x-python","patch_set":16,"id":"e7afc018_1ea0e57b","line":390,"in_reply_to":"c845f5b6_6c3c8779","updated":"2022-01-20 20:40:43.000000000","message":"As far as I understand - I cant add \"volume_name_template\" and \"snapshot_name_template\" to this list since these options are not included in the base class driver.VolumeDriver -added in last patch and it fail on test:\ncinder.tests.unit.test_interface.GetDriversTestCase.test_get_volume_drivers","commit_id":"4cc67357c17a72aa5fe42816df4f34d574bf1da8"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"10f91680991de8a394a4a549fb9e11f16b62cce4","unresolved":false,"context_lines":[{"line_number":387,"context_line":""},{"line_number":388,"context_line":"    @classmethod"},{"line_number":389,"context_line":"    def get_driver_options(cls):"},{"line_number":390,"context_line":"        return lightos_opts"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"    def create_cloned_volume(self, volume, src_vref):"},{"line_number":393,"context_line":"        \"\"\"Creates a clone of the specified volume."}],"source_content_type":"text/x-python","patch_set":16,"id":"a0eaf803_17218e5f","line":390,"in_reply_to":"d27174cc_3b85a440","updated":"2022-01-20 13:59:34.000000000","message":"Ack","commit_id":"4cc67357c17a72aa5fe42816df4f34d574bf1da8"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"518bc8ccb75471944cbc3722723d4bff9c02fc53","unresolved":true,"context_lines":[{"line_number":387,"context_line":""},{"line_number":388,"context_line":"    @classmethod"},{"line_number":389,"context_line":"    def get_driver_options(cls):"},{"line_number":390,"context_line":"        return lightos_opts"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"    def create_cloned_volume(self, volume, src_vref):"},{"line_number":393,"context_line":"        \"\"\"Creates a clone of the specified volume."}],"source_content_type":"text/x-python","patch_set":16,"id":"6adc6490_392c3e85","line":390,"in_reply_to":"d27174cc_3b85a440","updated":"2022-01-20 14:01:57.000000000","message":"Thanks, good point. We\u0027ll add.","commit_id":"4cc67357c17a72aa5fe42816df4f34d574bf1da8"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"a8fe37f74b6cb1c2bf507ecb05657c7debae3f4a","unresolved":false,"context_lines":[{"line_number":387,"context_line":""},{"line_number":388,"context_line":"    @classmethod"},{"line_number":389,"context_line":"    def get_driver_options(cls):"},{"line_number":390,"context_line":"        return lightos_opts"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"    def create_cloned_volume(self, volume, src_vref):"},{"line_number":393,"context_line":"        \"\"\"Creates a clone of the specified volume."}],"source_content_type":"text/x-python","patch_set":16,"id":"e5103621_b68159d7","line":390,"in_reply_to":"e7afc018_1ea0e57b","updated":"2022-01-20 21:29:23.000000000","message":"correct - they are common to all drivers.","commit_id":"4cc67357c17a72aa5fe42816df4f34d574bf1da8"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"37c8b6cc98b24454beaa71b8e4d1ee86f8df114d","unresolved":true,"context_lines":[{"line_number":818,"context_line":"        found_dsc \u003d self.connector.find_dsc()"},{"line_number":819,"context_line":"        if not found_dsc:"},{"line_number":820,"context_line":"            LOG.warn("},{"line_number":821,"context_line":"                \u0027LIGHTOS: did not find a discovery client, continuing anyway\u0027)"},{"line_number":822,"context_line":""},{"line_number":823,"context_line":"    def get_cluster_info(self):"},{"line_number":824,"context_line":"        status_code, cluster_info \u003d self.cluster.send_cmd("}],"source_content_type":"text/x-python","patch_set":16,"id":"1622aaa7_8f5bf60a","line":821,"updated":"2022-01-20 13:18:37.000000000","message":"-1: How can we continue?  If there is no DSC then the node won\u0027t be able to attach volumes, for example to create a volume from a downloaded Glance image, right?","commit_id":"4cc67357c17a72aa5fe42816df4f34d574bf1da8"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"518bc8ccb75471944cbc3722723d4bff9c02fc53","unresolved":true,"context_lines":[{"line_number":818,"context_line":"        found_dsc \u003d self.connector.find_dsc()"},{"line_number":819,"context_line":"        if not found_dsc:"},{"line_number":820,"context_line":"            LOG.warn("},{"line_number":821,"context_line":"                \u0027LIGHTOS: did not find a discovery client, continuing anyway\u0027)"},{"line_number":822,"context_line":""},{"line_number":823,"context_line":"    def get_cluster_info(self):"},{"line_number":824,"context_line":"        status_code, cluster_info \u003d self.cluster.send_cmd("}],"source_content_type":"text/x-python","patch_set":16,"id":"204c2944_d83abf12","line":821,"in_reply_to":"1622aaa7_8f5bf60a","updated":"2022-01-20 14:01:57.000000000","message":"Thanks for spotting this. This check was disabled in a previous version because it sometime failed to find the dsc even when it was available; we\u0027ll remove it completely from here, since it\u0027s actually redundant. New patchset coming up momentarily.","commit_id":"4cc67357c17a72aa5fe42816df4f34d574bf1da8"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"d10d7cf7ff4f8061b8db603b7f750ecd04eef483","unresolved":false,"context_lines":[{"line_number":818,"context_line":"        found_dsc \u003d self.connector.find_dsc()"},{"line_number":819,"context_line":"        if not found_dsc:"},{"line_number":820,"context_line":"            LOG.warn("},{"line_number":821,"context_line":"                \u0027LIGHTOS: did not find a discovery client, continuing anyway\u0027)"},{"line_number":822,"context_line":""},{"line_number":823,"context_line":"    def get_cluster_info(self):"},{"line_number":824,"context_line":"        status_code, cluster_info \u003d self.cluster.send_cmd("}],"source_content_type":"text/x-python","patch_set":16,"id":"75d6dcc1_927b16f2","line":821,"in_reply_to":"204c2944_d83abf12","updated":"2022-01-20 15:13:01.000000000","message":"Ack","commit_id":"4cc67357c17a72aa5fe42816df4f34d574bf1da8"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"37c8b6cc98b24454beaa71b8e4d1ee86f8df114d","unresolved":true,"context_lines":[{"line_number":1434,"context_line":"                    \u0027Terminating connection with extreme prejudice for \\"},{"line_number":1435,"context_line":"                    volume %s\u0027,"},{"line_number":1436,"context_line":"                    volume)"},{"line_number":1437,"context_line":"                project_name \u003d self._get_lightos_project_name(volume)"},{"line_number":1438,"context_line":"                self.remove_all_volume_acls(project_name, volume)"},{"line_number":1439,"context_line":"                return"},{"line_number":1440,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":16,"id":"e6167186_fc65600f","line":1437,"updated":"2022-01-20 13:18:37.000000000","message":"-1: project_name already has the right value, assigned on L1429","commit_id":"4cc67357c17a72aa5fe42816df4f34d574bf1da8"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"d10d7cf7ff4f8061b8db603b7f750ecd04eef483","unresolved":false,"context_lines":[{"line_number":1434,"context_line":"                    \u0027Terminating connection with extreme prejudice for \\"},{"line_number":1435,"context_line":"                    volume %s\u0027,"},{"line_number":1436,"context_line":"                    volume)"},{"line_number":1437,"context_line":"                project_name \u003d self._get_lightos_project_name(volume)"},{"line_number":1438,"context_line":"                self.remove_all_volume_acls(project_name, volume)"},{"line_number":1439,"context_line":"                return"},{"line_number":1440,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":16,"id":"1d3175e6_f7e3e2f2","line":1437,"in_reply_to":"51b5d95a_8bc0930b","updated":"2022-01-20 15:13:01.000000000","message":"Ack","commit_id":"4cc67357c17a72aa5fe42816df4f34d574bf1da8"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"10f91680991de8a394a4a549fb9e11f16b62cce4","unresolved":false,"context_lines":[{"line_number":1434,"context_line":"                    \u0027Terminating connection with extreme prejudice for \\"},{"line_number":1435,"context_line":"                    volume %s\u0027,"},{"line_number":1436,"context_line":"                    volume)"},{"line_number":1437,"context_line":"                project_name \u003d self._get_lightos_project_name(volume)"},{"line_number":1438,"context_line":"                self.remove_all_volume_acls(project_name, volume)"},{"line_number":1439,"context_line":"                return"},{"line_number":1440,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":16,"id":"23a3ad0f_588bf187","line":1437,"in_reply_to":"e6167186_fc65600f","updated":"2022-01-20 13:59:34.000000000","message":"Ack","commit_id":"4cc67357c17a72aa5fe42816df4f34d574bf1da8"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"518bc8ccb75471944cbc3722723d4bff9c02fc53","unresolved":true,"context_lines":[{"line_number":1434,"context_line":"                    \u0027Terminating connection with extreme prejudice for \\"},{"line_number":1435,"context_line":"                    volume %s\u0027,"},{"line_number":1436,"context_line":"                    volume)"},{"line_number":1437,"context_line":"                project_name \u003d self._get_lightos_project_name(volume)"},{"line_number":1438,"context_line":"                self.remove_all_volume_acls(project_name, volume)"},{"line_number":1439,"context_line":"                return"},{"line_number":1440,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":16,"id":"51b5d95a_8bc0930b","line":1437,"in_reply_to":"e6167186_fc65600f","updated":"2022-01-20 14:01:57.000000000","message":"Thanks, we\u0027ll fix.","commit_id":"4cc67357c17a72aa5fe42816df4f34d574bf1da8"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"37c8b6cc98b24454beaa71b8e4d1ee86f8df114d","unresolved":false,"context_lines":[{"line_number":1435,"context_line":"                    volume %s\u0027,"},{"line_number":1436,"context_line":"                    volume)"},{"line_number":1437,"context_line":"                project_name \u003d self._get_lightos_project_name(volume)"},{"line_number":1438,"context_line":"                self.remove_all_volume_acls(project_name, volume)"},{"line_number":1439,"context_line":"                return"},{"line_number":1440,"context_line":"            else:"},{"line_number":1441,"context_line":"                msg \u003d \u0027Connector (%s) did not return a hostnqn, aborting\u0027 % ("}],"source_content_type":"text/x-python","patch_set":16,"id":"cb2cf09b_3bcdd5c1","line":1438,"updated":"2022-01-20 13:18:37.000000000","message":"Thank you for making the change.","commit_id":"4cc67357c17a72aa5fe42816df4f34d574bf1da8"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"518bc8ccb75471944cbc3722723d4bff9c02fc53","unresolved":false,"context_lines":[{"line_number":1435,"context_line":"                    volume %s\u0027,"},{"line_number":1436,"context_line":"                    volume)"},{"line_number":1437,"context_line":"                project_name \u003d self._get_lightos_project_name(volume)"},{"line_number":1438,"context_line":"                self.remove_all_volume_acls(project_name, volume)"},{"line_number":1439,"context_line":"                return"},{"line_number":1440,"context_line":"            else:"},{"line_number":1441,"context_line":"                msg \u003d \u0027Connector (%s) did not return a hostnqn, aborting\u0027 % ("}],"source_content_type":"text/x-python","patch_set":16,"id":"b8bc55ac_83762d4c","line":1438,"in_reply_to":"cb2cf09b_3bcdd5c1","updated":"2022-01-20 14:01:57.000000000","message":"Thank you for drawing our attention to it.","commit_id":"4cc67357c17a72aa5fe42816df4f34d574bf1da8"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"37c8b6cc98b24454beaa71b8e4d1ee86f8df114d","unresolved":true,"context_lines":[{"line_number":1437,"context_line":"                project_name \u003d self._get_lightos_project_name(volume)"},{"line_number":1438,"context_line":"                self.remove_all_volume_acls(project_name, volume)"},{"line_number":1439,"context_line":"                return"},{"line_number":1440,"context_line":"            else:"},{"line_number":1441,"context_line":"                msg \u003d \u0027Connector (%s) did not return a hostnqn, aborting\u0027 % ("},{"line_number":1442,"context_line":"                    connector,)"},{"line_number":1443,"context_line":"                raise exception.VolumeBackendAPIException(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":16,"id":"99d45c0d_3e54696d","line":1440,"updated":"2022-01-20 13:18:37.000000000","message":"nit: No need for the \"else\", since we have a return on the previous line","commit_id":"4cc67357c17a72aa5fe42816df4f34d574bf1da8"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"d10d7cf7ff4f8061b8db603b7f750ecd04eef483","unresolved":false,"context_lines":[{"line_number":1437,"context_line":"                project_name \u003d self._get_lightos_project_name(volume)"},{"line_number":1438,"context_line":"                self.remove_all_volume_acls(project_name, volume)"},{"line_number":1439,"context_line":"                return"},{"line_number":1440,"context_line":"            else:"},{"line_number":1441,"context_line":"                msg \u003d \u0027Connector (%s) did not return a hostnqn, aborting\u0027 % ("},{"line_number":1442,"context_line":"                    connector,)"},{"line_number":1443,"context_line":"                raise exception.VolumeBackendAPIException(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":16,"id":"448649f6_b59babcd","line":1440,"in_reply_to":"01579fb0_914be96a","updated":"2022-01-20 15:13:01.000000000","message":"Ack","commit_id":"4cc67357c17a72aa5fe42816df4f34d574bf1da8"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"10f91680991de8a394a4a549fb9e11f16b62cce4","unresolved":false,"context_lines":[{"line_number":1437,"context_line":"                project_name \u003d self._get_lightos_project_name(volume)"},{"line_number":1438,"context_line":"                self.remove_all_volume_acls(project_name, volume)"},{"line_number":1439,"context_line":"                return"},{"line_number":1440,"context_line":"            else:"},{"line_number":1441,"context_line":"                msg \u003d \u0027Connector (%s) did not return a hostnqn, aborting\u0027 % ("},{"line_number":1442,"context_line":"                    connector,)"},{"line_number":1443,"context_line":"                raise exception.VolumeBackendAPIException(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":16,"id":"1b543de2_7e3cef2e","line":1440,"in_reply_to":"99d45c0d_3e54696d","updated":"2022-01-20 13:59:34.000000000","message":"Ack","commit_id":"4cc67357c17a72aa5fe42816df4f34d574bf1da8"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"518bc8ccb75471944cbc3722723d4bff9c02fc53","unresolved":true,"context_lines":[{"line_number":1437,"context_line":"                project_name \u003d self._get_lightos_project_name(volume)"},{"line_number":1438,"context_line":"                self.remove_all_volume_acls(project_name, volume)"},{"line_number":1439,"context_line":"                return"},{"line_number":1440,"context_line":"            else:"},{"line_number":1441,"context_line":"                msg \u003d \u0027Connector (%s) did not return a hostnqn, aborting\u0027 % ("},{"line_number":1442,"context_line":"                    connector,)"},{"line_number":1443,"context_line":"                raise exception.VolumeBackendAPIException(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":16,"id":"01579fb0_914be96a","line":1440,"in_reply_to":"99d45c0d_3e54696d","updated":"2022-01-20 14:01:57.000000000","message":"ack, we\u0027ll fix.","commit_id":"4cc67357c17a72aa5fe42816df4f34d574bf1da8"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"ecae5aad1dc694baa2aea8a63c08a216676681dd","unresolved":true,"context_lines":[{"line_number":53,"context_line":"                default\u003d\u0027443\u0027,"},{"line_number":54,"context_line":"                help\u003d\u0027The TCP/IP port at which the LightOS API\u0027"},{"line_number":55,"context_line":"                     \u0027 endpoints listen.\u0027"},{"line_number":56,"context_line":"                     \u0027 Port 443 is used for HTTPS other values\u0027"},{"line_number":57,"context_line":"                     \u0027 are used for HTTP.\u0027),"},{"line_number":58,"context_line":"    cfg.StrOpt(\u0027lightos_jwt\u0027,"},{"line_number":59,"context_line":"               default\u003dNone,"}],"source_content_type":"text/x-python","patch_set":19,"id":"a83a9be4_52effc68","line":56,"range":{"start_line":56,"start_character":49,"end_line":56,"end_character":55},"updated":"2022-01-21 07:43:57.000000000","message":"nit: and other","commit_id":"663891e17ce78408939163b048d30c5cf6dca0d6"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"dd2a302e276c11008ece08a51d013c247f6092a9","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                default\u003d\u0027443\u0027,"},{"line_number":54,"context_line":"                help\u003d\u0027The TCP/IP port at which the LightOS API\u0027"},{"line_number":55,"context_line":"                     \u0027 endpoints listen.\u0027"},{"line_number":56,"context_line":"                     \u0027 Port 443 is used for HTTPS other values\u0027"},{"line_number":57,"context_line":"                     \u0027 are used for HTTP.\u0027),"},{"line_number":58,"context_line":"    cfg.StrOpt(\u0027lightos_jwt\u0027,"},{"line_number":59,"context_line":"               default\u003dNone,"}],"source_content_type":"text/x-python","patch_set":19,"id":"92c600ef_6ad2176d","line":56,"range":{"start_line":56,"start_character":49,"end_line":56,"end_character":55},"in_reply_to":"a83a9be4_52effc68","updated":"2022-01-21 12:44:43.000000000","message":"Ack","commit_id":"663891e17ce78408939163b048d30c5cf6dca0d6"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"ecae5aad1dc694baa2aea8a63c08a216676681dd","unresolved":true,"context_lines":[{"line_number":69,"context_line":"                    \u0027 volume.\u0027),"},{"line_number":70,"context_line":"    cfg.BoolOpt(\u0027lightos_default_compression_enabled\u0027,"},{"line_number":71,"context_line":"                default\u003dFalse,"},{"line_number":72,"context_line":"                help\u003d\u0027The default compression enabled setting \u0027"},{"line_number":73,"context_line":"                     \u0027 for new volumes.\u0027),"},{"line_number":74,"context_line":"    cfg.IntOpt(\u0027lightos_api_service_timeout\u0027,"},{"line_number":75,"context_line":"               default\u003d30,"},{"line_number":76,"context_line":"               help\u003d\u0027The default amount of time (in seconds) to wait for\u0027"}],"source_content_type":"text/x-python","patch_set":19,"id":"cea63d95_7ffb1f1e","line":73,"range":{"start_line":72,"start_character":54,"end_line":73,"end_character":26},"updated":"2022-01-21 07:43:57.000000000","message":"nit: double space","commit_id":"663891e17ce78408939163b048d30c5cf6dca0d6"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"dd2a302e276c11008ece08a51d013c247f6092a9","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                    \u0027 volume.\u0027),"},{"line_number":70,"context_line":"    cfg.BoolOpt(\u0027lightos_default_compression_enabled\u0027,"},{"line_number":71,"context_line":"                default\u003dFalse,"},{"line_number":72,"context_line":"                help\u003d\u0027The default compression enabled setting \u0027"},{"line_number":73,"context_line":"                     \u0027 for new volumes.\u0027),"},{"line_number":74,"context_line":"    cfg.IntOpt(\u0027lightos_api_service_timeout\u0027,"},{"line_number":75,"context_line":"               default\u003d30,"},{"line_number":76,"context_line":"               help\u003d\u0027The default amount of time (in seconds) to wait for\u0027"}],"source_content_type":"text/x-python","patch_set":19,"id":"bcc8aa13_8db18dbc","line":73,"range":{"start_line":72,"start_character":54,"end_line":73,"end_character":26},"in_reply_to":"cea63d95_7ffb1f1e","updated":"2022-01-21 12:44:43.000000000","message":"Ack","commit_id":"663891e17ce78408939163b048d30c5cf6dca0d6"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"ecae5aad1dc694baa2aea8a63c08a216676681dd","unresolved":true,"context_lines":[{"line_number":363,"context_line":"        self.configuration.append_config_values(lightos_opts)"},{"line_number":364,"context_line":"        # connector implements NVMe/TCP initiator functionality."},{"line_number":365,"context_line":"        if not self.configuration.__dict__.get(\"initiator_connector\", None):"},{"line_number":366,"context_line":"            self.configuration.initiator_connector \u003d \\"},{"line_number":367,"context_line":"                \"os_brick.initiator.connector.InitiatorConnector\""},{"line_number":368,"context_line":"        if not self.configuration.__dict__.get(\"lightos_client\", None):"},{"line_number":369,"context_line":"            self.configuration.lightos_client \u003d \\"},{"line_number":370,"context_line":"                \"cinder.volume.drivers.lightos.LightOSConnection\""}],"source_content_type":"text/x-python","patch_set":19,"id":"a1da3907_fd8b4f49","line":367,"range":{"start_line":366,"start_character":12,"end_line":367,"end_character":65},"updated":"2022-01-21 07:43:57.000000000","message":"nit: If another patch is submitted, \nthen parenthesis () can be used instead of \\","commit_id":"663891e17ce78408939163b048d30c5cf6dca0d6"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"dd2a302e276c11008ece08a51d013c247f6092a9","unresolved":false,"context_lines":[{"line_number":363,"context_line":"        self.configuration.append_config_values(lightos_opts)"},{"line_number":364,"context_line":"        # connector implements NVMe/TCP initiator functionality."},{"line_number":365,"context_line":"        if not self.configuration.__dict__.get(\"initiator_connector\", None):"},{"line_number":366,"context_line":"            self.configuration.initiator_connector \u003d \\"},{"line_number":367,"context_line":"                \"os_brick.initiator.connector.InitiatorConnector\""},{"line_number":368,"context_line":"        if not self.configuration.__dict__.get(\"lightos_client\", None):"},{"line_number":369,"context_line":"            self.configuration.lightos_client \u003d \\"},{"line_number":370,"context_line":"                \"cinder.volume.drivers.lightos.LightOSConnection\""}],"source_content_type":"text/x-python","patch_set":19,"id":"2c144a6c_361155f0","line":367,"range":{"start_line":366,"start_character":12,"end_line":367,"end_character":65},"in_reply_to":"a1da3907_fd8b4f49","updated":"2022-01-21 12:44:43.000000000","message":"Ack","commit_id":"663891e17ce78408939163b048d30c5cf6dca0d6"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"ecae5aad1dc694baa2aea8a63c08a216676681dd","unresolved":true,"context_lines":[{"line_number":366,"context_line":"            self.configuration.initiator_connector \u003d \\"},{"line_number":367,"context_line":"                \"os_brick.initiator.connector.InitiatorConnector\""},{"line_number":368,"context_line":"        if not self.configuration.__dict__.get(\"lightos_client\", None):"},{"line_number":369,"context_line":"            self.configuration.lightos_client \u003d \\"},{"line_number":370,"context_line":"                \"cinder.volume.drivers.lightos.LightOSConnection\""},{"line_number":371,"context_line":""},{"line_number":372,"context_line":"        initiator_connector \u003d importutils.import_class("}],"source_content_type":"text/x-python","patch_set":19,"id":"61c7d355_d23d5665","line":369,"updated":"2022-01-21 07:43:57.000000000","message":"nit: same as above","commit_id":"663891e17ce78408939163b048d30c5cf6dca0d6"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"dd2a302e276c11008ece08a51d013c247f6092a9","unresolved":false,"context_lines":[{"line_number":366,"context_line":"            self.configuration.initiator_connector \u003d \\"},{"line_number":367,"context_line":"                \"os_brick.initiator.connector.InitiatorConnector\""},{"line_number":368,"context_line":"        if not self.configuration.__dict__.get(\"lightos_client\", None):"},{"line_number":369,"context_line":"            self.configuration.lightos_client \u003d \\"},{"line_number":370,"context_line":"                \"cinder.volume.drivers.lightos.LightOSConnection\""},{"line_number":371,"context_line":""},{"line_number":372,"context_line":"        initiator_connector \u003d importutils.import_class("}],"source_content_type":"text/x-python","patch_set":19,"id":"3670b6f8_34bebdd3","line":369,"in_reply_to":"61c7d355_d23d5665","updated":"2022-01-21 12:44:43.000000000","message":"Ack","commit_id":"663891e17ce78408939163b048d30c5cf6dca0d6"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"ecae5aad1dc694baa2aea8a63c08a216676681dd","unresolved":true,"context_lines":[{"line_number":420,"context_line":"            self._create_volume(volume,"},{"line_number":421,"context_line":"                                src_snapshot_lightos_name\u003dsnapshot_name)"},{"line_number":422,"context_line":"        except Exception as e:"},{"line_number":423,"context_line":"            LOG.warn(\"Failed to create volume %s from intermediate \""},{"line_number":424,"context_line":"                     \" snapshot %s. Trying to clean up.\","},{"line_number":425,"context_line":"                     src_volume_name, snapshot_name)"},{"line_number":426,"context_line":"            raise e"}],"source_content_type":"text/x-python","patch_set":19,"id":"9441ddc3_5bfd5722","line":423,"range":{"start_line":423,"start_character":12,"end_line":423,"end_character":20},"updated":"2022-01-21 07:43:57.000000000","message":"Since creation of cloned volume is failed, should this be reported as error instead of warning?","commit_id":"663891e17ce78408939163b048d30c5cf6dca0d6"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"dd2a302e276c11008ece08a51d013c247f6092a9","unresolved":false,"context_lines":[{"line_number":420,"context_line":"            self._create_volume(volume,"},{"line_number":421,"context_line":"                                src_snapshot_lightos_name\u003dsnapshot_name)"},{"line_number":422,"context_line":"        except Exception as e:"},{"line_number":423,"context_line":"            LOG.warn(\"Failed to create volume %s from intermediate \""},{"line_number":424,"context_line":"                     \" snapshot %s. Trying to clean up.\","},{"line_number":425,"context_line":"                     src_volume_name, snapshot_name)"},{"line_number":426,"context_line":"            raise e"}],"source_content_type":"text/x-python","patch_set":19,"id":"dc22b12a_ab31a52b","line":423,"range":{"start_line":423,"start_character":12,"end_line":423,"end_character":20},"in_reply_to":"9441ddc3_5bfd5722","updated":"2022-01-21 12:44:43.000000000","message":"Ack","commit_id":"663891e17ce78408939163b048d30c5cf6dca0d6"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"ecae5aad1dc694baa2aea8a63c08a216676681dd","unresolved":true,"context_lines":[{"line_number":554,"context_line":"        return state"},{"line_number":555,"context_line":""},{"line_number":556,"context_line":"    def _get_volume_specs(self, volume):"},{"line_number":557,"context_line":"        compression \u003d \u0027True\u0027 if self.configuration. \\"},{"line_number":558,"context_line":"            lightos_default_compression_enabled else \u0027False\u0027"},{"line_number":559,"context_line":"        num_replicas \u003d str(self.configuration.lightos_default_num_replicas)"},{"line_number":560,"context_line":""},{"line_number":561,"context_line":"        if not volume.volume_type:"}],"source_content_type":"text/x-python","patch_set":19,"id":"84790198_a5640645","line":558,"range":{"start_line":557,"start_character":0,"end_line":558,"end_character":60},"updated":"2022-01-21 07:43:57.000000000","message":"if possible, boolean values True/False can be used instead of string values \u0027True\u0027/\u0027False\u0027","commit_id":"663891e17ce78408939163b048d30c5cf6dca0d6"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"6bf113f6b670baa3577e296e9f1a36547b90aa30","unresolved":false,"context_lines":[{"line_number":554,"context_line":"        return state"},{"line_number":555,"context_line":""},{"line_number":556,"context_line":"    def _get_volume_specs(self, volume):"},{"line_number":557,"context_line":"        compression \u003d \u0027True\u0027 if self.configuration. \\"},{"line_number":558,"context_line":"            lightos_default_compression_enabled else \u0027False\u0027"},{"line_number":559,"context_line":"        num_replicas \u003d str(self.configuration.lightos_default_num_replicas)"},{"line_number":560,"context_line":""},{"line_number":561,"context_line":"        if not volume.volume_type:"}],"source_content_type":"text/x-python","patch_set":19,"id":"f869b37f_acfb0180","line":558,"range":{"start_line":557,"start_character":0,"end_line":558,"end_character":60},"in_reply_to":"43dcf404_4fa303fa","updated":"2022-01-30 09:25:41.000000000","message":"Resolving per Yuval\u0027s comment.","commit_id":"663891e17ce78408939163b048d30c5cf6dca0d6"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"761579ebbaf0917951b491f93c8589fd9cd8b4f1","unresolved":true,"context_lines":[{"line_number":554,"context_line":"        return state"},{"line_number":555,"context_line":""},{"line_number":556,"context_line":"    def _get_volume_specs(self, volume):"},{"line_number":557,"context_line":"        compression \u003d \u0027True\u0027 if self.configuration. \\"},{"line_number":558,"context_line":"            lightos_default_compression_enabled else \u0027False\u0027"},{"line_number":559,"context_line":"        num_replicas \u003d str(self.configuration.lightos_default_num_replicas)"},{"line_number":560,"context_line":""},{"line_number":561,"context_line":"        if not volume.volume_type:"}],"source_content_type":"text/x-python","patch_set":19,"id":"43dcf404_4fa303fa","line":558,"range":{"start_line":557,"start_character":0,"end_line":558,"end_character":60},"in_reply_to":"84790198_a5640645","updated":"2022-01-21 13:45:21.000000000","message":"LightOS official API uses string for this parameter, and we wanted to avoid conversions","commit_id":"663891e17ce78408939163b048d30c5cf6dca0d6"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"ecae5aad1dc694baa2aea8a63c08a216676681dd","unresolved":true,"context_lines":[{"line_number":608,"context_line":""},{"line_number":609,"context_line":"        lightos_uuid \u003d data.get(\u0027UUID\u0027)"},{"line_number":610,"context_line":"        if not lightos_uuid:"},{"line_number":611,"context_line":"            LOG.error(\u0027Failed to get LightOS volume UUID\u0027,"},{"line_number":612,"context_line":"                      status, str(data))"},{"line_number":613,"context_line":"            raise exception.VolumeNotFound(volume_id\u003dvolume)"},{"line_number":614,"context_line":""},{"line_number":615,"context_line":"        return lightos_uuid"}],"source_content_type":"text/x-python","patch_set":19,"id":"cbd9cb70_6e3dcfaa","line":612,"range":{"start_line":611,"start_character":0,"end_line":612,"end_character":40},"updated":"2022-01-21 07:43:57.000000000","message":"two %s missing? (needed for passing status \u0026 data)?","commit_id":"663891e17ce78408939163b048d30c5cf6dca0d6"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"dd2a302e276c11008ece08a51d013c247f6092a9","unresolved":false,"context_lines":[{"line_number":608,"context_line":""},{"line_number":609,"context_line":"        lightos_uuid \u003d data.get(\u0027UUID\u0027)"},{"line_number":610,"context_line":"        if not lightos_uuid:"},{"line_number":611,"context_line":"            LOG.error(\u0027Failed to get LightOS volume UUID\u0027,"},{"line_number":612,"context_line":"                      status, str(data))"},{"line_number":613,"context_line":"            raise exception.VolumeNotFound(volume_id\u003dvolume)"},{"line_number":614,"context_line":""},{"line_number":615,"context_line":"        return lightos_uuid"}],"source_content_type":"text/x-python","patch_set":19,"id":"2d2aa81d_0b061680","line":612,"range":{"start_line":611,"start_character":0,"end_line":612,"end_character":40},"in_reply_to":"cbd9cb70_6e3dcfaa","updated":"2022-01-21 12:44:43.000000000","message":"Ack","commit_id":"663891e17ce78408939163b048d30c5cf6dca0d6"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"ecae5aad1dc694baa2aea8a63c08a216676681dd","unresolved":true,"context_lines":[{"line_number":674,"context_line":"                self._delete_lightos_volume(project_name, lightos_uuid)"},{"line_number":675,"context_line":"                # wait for openstack to call us again to create it"},{"line_number":676,"context_line":""},{"line_number":677,"context_line":"        msg \u003d \u0027Did not succeed creating LightOS volume with UUID %s \\"},{"line_number":678,"context_line":"        status_code %s last state %s\u0027 % \\"},{"line_number":679,"context_line":"              (lightos_uuid, status_code, vol_state)"},{"line_number":680,"context_line":"        raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":681,"context_line":""},{"line_number":682,"context_line":"    def _wait_for_snapshot_available(self, project_name,"}],"source_content_type":"text/x-python","patch_set":19,"id":"dbef29f2_c5ac3a9d","line":679,"range":{"start_line":677,"start_character":1,"end_line":679,"end_character":52},"updated":"2022-01-21 07:43:57.000000000","message":"Since this message would be seen by user, it would be better to use _().\nAlso better to use named interpolation for three variables.","commit_id":"663891e17ce78408939163b048d30c5cf6dca0d6"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"dd2a302e276c11008ece08a51d013c247f6092a9","unresolved":false,"context_lines":[{"line_number":674,"context_line":"                self._delete_lightos_volume(project_name, lightos_uuid)"},{"line_number":675,"context_line":"                # wait for openstack to call us again to create it"},{"line_number":676,"context_line":""},{"line_number":677,"context_line":"        msg \u003d \u0027Did not succeed creating LightOS volume with UUID %s \\"},{"line_number":678,"context_line":"        status_code %s last state %s\u0027 % \\"},{"line_number":679,"context_line":"              (lightos_uuid, status_code, vol_state)"},{"line_number":680,"context_line":"        raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":681,"context_line":""},{"line_number":682,"context_line":"    def _wait_for_snapshot_available(self, project_name,"}],"source_content_type":"text/x-python","patch_set":19,"id":"7ec7b8f2_2b99cf21","line":679,"range":{"start_line":677,"start_character":1,"end_line":679,"end_character":52},"in_reply_to":"dbef29f2_c5ac3a9d","updated":"2022-01-21 12:44:43.000000000","message":"Ack","commit_id":"663891e17ce78408939163b048d30c5cf6dca0d6"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"ecae5aad1dc694baa2aea8a63c08a216676681dd","unresolved":true,"context_lines":[{"line_number":764,"context_line":"            if status_code \u003d\u003d httpstatus.OK:"},{"line_number":765,"context_line":"                break"},{"line_number":766,"context_line":""},{"line_number":767,"context_line":"            LOG.info("},{"line_number":768,"context_line":"                \"delete_volume for volume with LightOS UUID %s failed \\"},{"line_number":769,"context_line":"                with status code %s response %s\","},{"line_number":770,"context_line":"                lightos_uuid,"}],"source_content_type":"text/x-python","patch_set":19,"id":"f5835224_e3c54637","line":767,"range":{"start_line":767,"start_character":12,"end_line":767,"end_character":21},"updated":"2022-01-21 07:43:57.000000000","message":"LOG.error","commit_id":"663891e17ce78408939163b048d30c5cf6dca0d6"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"dd2a302e276c11008ece08a51d013c247f6092a9","unresolved":false,"context_lines":[{"line_number":764,"context_line":"            if status_code \u003d\u003d httpstatus.OK:"},{"line_number":765,"context_line":"                break"},{"line_number":766,"context_line":""},{"line_number":767,"context_line":"            LOG.info("},{"line_number":768,"context_line":"                \"delete_volume for volume with LightOS UUID %s failed \\"},{"line_number":769,"context_line":"                with status code %s response %s\","},{"line_number":770,"context_line":"                lightos_uuid,"}],"source_content_type":"text/x-python","patch_set":19,"id":"76a5f752_b8b5238c","line":767,"range":{"start_line":767,"start_character":12,"end_line":767,"end_character":21},"in_reply_to":"f5835224_e3c54637","updated":"2022-01-21 12:44:43.000000000","message":"Ack","commit_id":"663891e17ce78408939163b048d30c5cf6dca0d6"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"ecae5aad1dc694baa2aea8a63c08a216676681dd","unresolved":true,"context_lines":[{"line_number":794,"context_line":"            return True"},{"line_number":795,"context_line":""},{"line_number":796,"context_line":"        if not self._delete_lightos_volume(project_name, lightos_uuid):"},{"line_number":797,"context_line":"            msg \u003d \u0027Failed to delete LightOS volume with UUID \\"},{"line_number":798,"context_line":"             %s project %s\u0027 % ("},{"line_number":799,"context_line":"                lightos_uuid, project_name)"},{"line_number":800,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":801,"context_line":""},{"line_number":802,"context_line":"    def get_vol_by_id(self, volume):"}],"source_content_type":"text/x-python","patch_set":19,"id":"9aa712ef_c886ef00","line":799,"range":{"start_line":797,"start_character":1,"end_line":799,"end_character":43},"updated":"2022-01-21 07:43:57.000000000","message":"same comment as on line 677","commit_id":"663891e17ce78408939163b048d30c5cf6dca0d6"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"dd2a302e276c11008ece08a51d013c247f6092a9","unresolved":false,"context_lines":[{"line_number":794,"context_line":"            return True"},{"line_number":795,"context_line":""},{"line_number":796,"context_line":"        if not self._delete_lightos_volume(project_name, lightos_uuid):"},{"line_number":797,"context_line":"            msg \u003d \u0027Failed to delete LightOS volume with UUID \\"},{"line_number":798,"context_line":"             %s project %s\u0027 % ("},{"line_number":799,"context_line":"                lightos_uuid, project_name)"},{"line_number":800,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":801,"context_line":""},{"line_number":802,"context_line":"    def get_vol_by_id(self, volume):"}],"source_content_type":"text/x-python","patch_set":19,"id":"2be63bc4_dd185bcf","line":799,"range":{"start_line":797,"start_character":1,"end_line":799,"end_character":43},"in_reply_to":"9aa712ef_c886ef00","updated":"2022-01-21 12:44:43.000000000","message":"Ack","commit_id":"663891e17ce78408939163b048d30c5cf6dca0d6"},{"author":{"_account_id":28403,"name":"Naoki Saito","email":"nasaito@nec.com","username":"n-saito"},"change_message_id":"f0e17f9bd5dec89d3d79d89c222dd0fd59d65c81","unresolved":true,"context_lines":[{"line_number":812,"context_line":"    def check_for_setup_error(self):"},{"line_number":813,"context_line":"        subsysnqn \u003d self.cluster.subsystemNQN"},{"line_number":814,"context_line":"        if not subsysnqn:"},{"line_number":815,"context_line":"            msg \u003d \u0027LIGHTOS: Cinder driver requires the \\"},{"line_number":816,"context_line":"            LightOS cluster subsysnqn\u0027"},{"line_number":817,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":818,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"914ba42c_7d820f5f","line":815,"updated":"2022-01-22 01:25:26.000000000","message":"I think this need  _() here too.","commit_id":"693e126ec29d7997e7ff3e5868bf78ea8a38ea9e"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"db11a04a4ebdaccfa9c68e9941073daa4ab55d60","unresolved":false,"context_lines":[{"line_number":812,"context_line":"    def check_for_setup_error(self):"},{"line_number":813,"context_line":"        subsysnqn \u003d self.cluster.subsystemNQN"},{"line_number":814,"context_line":"        if not subsysnqn:"},{"line_number":815,"context_line":"            msg \u003d \u0027LIGHTOS: Cinder driver requires the \\"},{"line_number":816,"context_line":"            LightOS cluster subsysnqn\u0027"},{"line_number":817,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":818,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"c2ed5e94_12cad693","line":815,"in_reply_to":"914ba42c_7d820f5f","updated":"2022-01-23 20:26:25.000000000","message":"Ack","commit_id":"693e126ec29d7997e7ff3e5868bf78ea8a38ea9e"},{"author":{"_account_id":28403,"name":"Naoki Saito","email":"nasaito@nec.com","username":"n-saito"},"change_message_id":"f0e17f9bd5dec89d3d79d89c222dd0fd59d65c81","unresolved":true,"context_lines":[{"line_number":818,"context_line":""},{"line_number":819,"context_line":"        hostnqn \u003d self.connector.get_hostnqn()"},{"line_number":820,"context_line":"        if not hostnqn:"},{"line_number":821,"context_line":"            msg \u003d \u0027LIGHTOS: Cinder driver requires a local hostnqn for \\"},{"line_number":822,"context_line":"            image_to/from_volume operations\u0027"},{"line_number":823,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":824,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"aea80b2a_c930927a","line":821,"updated":"2022-01-22 01:25:26.000000000","message":"same","commit_id":"693e126ec29d7997e7ff3e5868bf78ea8a38ea9e"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"db11a04a4ebdaccfa9c68e9941073daa4ab55d60","unresolved":false,"context_lines":[{"line_number":818,"context_line":""},{"line_number":819,"context_line":"        hostnqn \u003d self.connector.get_hostnqn()"},{"line_number":820,"context_line":"        if not hostnqn:"},{"line_number":821,"context_line":"            msg \u003d \u0027LIGHTOS: Cinder driver requires a local hostnqn for \\"},{"line_number":822,"context_line":"            image_to/from_volume operations\u0027"},{"line_number":823,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":824,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"ddb364a6_f1a9dcb8","line":821,"in_reply_to":"aea80b2a_c930927a","updated":"2022-01-23 20:26:25.000000000","message":"Ack","commit_id":"693e126ec29d7997e7ff3e5868bf78ea8a38ea9e"},{"author":{"_account_id":28403,"name":"Naoki Saito","email":"nasaito@nec.com","username":"n-saito"},"change_message_id":"f0e17f9bd5dec89d3d79d89c222dd0fd59d65c81","unresolved":true,"context_lines":[{"line_number":829,"context_line":"            msg \u003d f\u0027LIGHTOS: failed to connect to cluster. code: {status_code}\u0027"},{"line_number":830,"context_line":"            raise exception.InvalidAuthKey(message\u003dmsg)"},{"line_number":831,"context_line":"        if status_code !\u003d httpstatus.OK:"},{"line_number":832,"context_line":"            msg \u003d \u0027LIGHTOS: Could not connect to LightOS cluster\u0027"},{"line_number":833,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":834,"context_line":""},{"line_number":835,"context_line":"        LOG.info(\"Connected to LightOS cluster %s subsysnqn %s\","}],"source_content_type":"text/x-python","patch_set":20,"id":"cc10a2aa_e3282b3d","line":832,"updated":"2022-01-22 01:25:26.000000000","message":"same","commit_id":"693e126ec29d7997e7ff3e5868bf78ea8a38ea9e"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"db11a04a4ebdaccfa9c68e9941073daa4ab55d60","unresolved":false,"context_lines":[{"line_number":829,"context_line":"            msg \u003d f\u0027LIGHTOS: failed to connect to cluster. code: {status_code}\u0027"},{"line_number":830,"context_line":"            raise exception.InvalidAuthKey(message\u003dmsg)"},{"line_number":831,"context_line":"        if status_code !\u003d httpstatus.OK:"},{"line_number":832,"context_line":"            msg \u003d \u0027LIGHTOS: Could not connect to LightOS cluster\u0027"},{"line_number":833,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":834,"context_line":""},{"line_number":835,"context_line":"        LOG.info(\"Connected to LightOS cluster %s subsysnqn %s\","}],"source_content_type":"text/x-python","patch_set":20,"id":"b6999a8b_45367d13","line":832,"in_reply_to":"cc10a2aa_e3282b3d","updated":"2022-01-23 20:26:25.000000000","message":"Ack","commit_id":"693e126ec29d7997e7ff3e5868bf78ea8a38ea9e"},{"author":{"_account_id":28403,"name":"Naoki Saito","email":"nasaito@nec.com","username":"n-saito"},"change_message_id":"f0e17f9bd5dec89d3d79d89c222dd0fd59d65c81","unresolved":true,"context_lines":[{"line_number":841,"context_line":"        status_code, cluster_info \u003d self.cluster.send_cmd("},{"line_number":842,"context_line":"            cmd\u003d\u0027get_cluster\u0027, timeout\u003dself.logical_op_timeout)"},{"line_number":843,"context_line":"        if status_code !\u003d httpstatus.OK:"},{"line_number":844,"context_line":"            msg \u003d \u0027LIGHTOS: Could not connect to LightOS cluster\u0027"},{"line_number":845,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":846,"context_line":""},{"line_number":847,"context_line":"        return cluster_info[\u0027statistics\u0027]"}],"source_content_type":"text/x-python","patch_set":20,"id":"5b578a8a_003233f6","line":844,"updated":"2022-01-22 01:25:26.000000000","message":"same","commit_id":"693e126ec29d7997e7ff3e5868bf78ea8a38ea9e"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"db11a04a4ebdaccfa9c68e9941073daa4ab55d60","unresolved":false,"context_lines":[{"line_number":841,"context_line":"        status_code, cluster_info \u003d self.cluster.send_cmd("},{"line_number":842,"context_line":"            cmd\u003d\u0027get_cluster\u0027, timeout\u003dself.logical_op_timeout)"},{"line_number":843,"context_line":"        if status_code !\u003d httpstatus.OK:"},{"line_number":844,"context_line":"            msg \u003d \u0027LIGHTOS: Could not connect to LightOS cluster\u0027"},{"line_number":845,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":846,"context_line":""},{"line_number":847,"context_line":"        return cluster_info[\u0027statistics\u0027]"}],"source_content_type":"text/x-python","patch_set":20,"id":"3ad1defe_088b81c8","line":844,"in_reply_to":"5b578a8a_003233f6","updated":"2022-01-23 20:26:25.000000000","message":"Ack","commit_id":"693e126ec29d7997e7ff3e5868bf78ea8a38ea9e"},{"author":{"_account_id":28403,"name":"Naoki Saito","email":"nasaito@nec.com","username":"n-saito"},"change_message_id":"f0e17f9bd5dec89d3d79d89c222dd0fd59d65c81","unresolved":true,"context_lines":[{"line_number":866,"context_line":"            return nodes_info"},{"line_number":867,"context_line":""},{"line_number":868,"context_line":"        # bail out if we got here, timeout elapsed"},{"line_number":869,"context_line":"        msg \u003d \u0027Failed to get nodes, last status was {} nodes_info {}\u0027.format("},{"line_number":870,"context_line":"            status_code, nodes_info)"},{"line_number":871,"context_line":"        raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":872,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"799af837_4f50923a","line":869,"updated":"2022-01-22 01:25:26.000000000","message":"same","commit_id":"693e126ec29d7997e7ff3e5868bf78ea8a38ea9e"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"db11a04a4ebdaccfa9c68e9941073daa4ab55d60","unresolved":false,"context_lines":[{"line_number":866,"context_line":"            return nodes_info"},{"line_number":867,"context_line":""},{"line_number":868,"context_line":"        # bail out if we got here, timeout elapsed"},{"line_number":869,"context_line":"        msg \u003d \u0027Failed to get nodes, last status was {} nodes_info {}\u0027.format("},{"line_number":870,"context_line":"            status_code, nodes_info)"},{"line_number":871,"context_line":"        raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":872,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"0aa5d1cd_4091b8ce","line":869,"in_reply_to":"799af837_4f50923a","updated":"2022-01-23 20:26:25.000000000","message":"Ack","commit_id":"693e126ec29d7997e7ff3e5868bf78ea8a38ea9e"},{"author":{"_account_id":28403,"name":"Naoki Saito","email":"nasaito@nec.com","username":"n-saito"},"change_message_id":"f0e17f9bd5dec89d3d79d89c222dd0fd59d65c81","unresolved":true,"context_lines":[{"line_number":1294,"context_line":"                time.sleep(1)"},{"line_number":1295,"context_line":""},{"line_number":1296,"context_line":"            if status_code_create !\u003d httpstatus.OK:"},{"line_number":1297,"context_line":"                msg \u003d \u0027Did not succeed creating LightOS snapshot %s \\"},{"line_number":1298,"context_line":"                       project %s\u0027 \\"},{"line_number":1299,"context_line":"                      \u0027status code %s response %s\u0027 % \\"},{"line_number":1300,"context_line":"                      (snapshot_name, project_name, status_code_create,"}],"source_content_type":"text/x-python","patch_set":20,"id":"f9d15272_6ca661f3","line":1297,"updated":"2022-01-22 01:25:26.000000000","message":"same","commit_id":"693e126ec29d7997e7ff3e5868bf78ea8a38ea9e"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"db11a04a4ebdaccfa9c68e9941073daa4ab55d60","unresolved":false,"context_lines":[{"line_number":1294,"context_line":"                time.sleep(1)"},{"line_number":1295,"context_line":""},{"line_number":1296,"context_line":"            if status_code_create !\u003d httpstatus.OK:"},{"line_number":1297,"context_line":"                msg \u003d \u0027Did not succeed creating LightOS snapshot %s \\"},{"line_number":1298,"context_line":"                       project %s\u0027 \\"},{"line_number":1299,"context_line":"                      \u0027status code %s response %s\u0027 % \\"},{"line_number":1300,"context_line":"                      (snapshot_name, project_name, status_code_create,"}],"source_content_type":"text/x-python","patch_set":20,"id":"ff8a7d76_2dec2c96","line":1297,"in_reply_to":"f9d15272_6ca661f3","updated":"2022-01-23 20:26:25.000000000","message":"Ack","commit_id":"693e126ec29d7997e7ff3e5868bf78ea8a38ea9e"},{"author":{"_account_id":28403,"name":"Naoki Saito","email":"nasaito@nec.com","username":"n-saito"},"change_message_id":"f0e17f9bd5dec89d3d79d89c222dd0fd59d65c81","unresolved":true,"context_lines":[{"line_number":1323,"context_line":"        except exception.CinderException as ex:"},{"line_number":1324,"context_line":"            LOG.warn(\"Error deleting snapshot during cleanup: %s\", ex)"},{"line_number":1325,"context_line":""},{"line_number":1326,"context_line":"        msg \u003d \u0027Did not succeed creating LightOS snapshot %s project \\"},{"line_number":1327,"context_line":"         %s last state %s\u0027 % \\"},{"line_number":1328,"context_line":"              (snapshot_name, project_name, state)"},{"line_number":1329,"context_line":"        raise exception.VolumeBackendAPIException(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":20,"id":"2afe2389_45dbc046","line":1326,"updated":"2022-01-22 01:25:26.000000000","message":"same","commit_id":"693e126ec29d7997e7ff3e5868bf78ea8a38ea9e"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"db11a04a4ebdaccfa9c68e9941073daa4ab55d60","unresolved":false,"context_lines":[{"line_number":1323,"context_line":"        except exception.CinderException as ex:"},{"line_number":1324,"context_line":"            LOG.warn(\"Error deleting snapshot during cleanup: %s\", ex)"},{"line_number":1325,"context_line":""},{"line_number":1326,"context_line":"        msg \u003d \u0027Did not succeed creating LightOS snapshot %s project \\"},{"line_number":1327,"context_line":"         %s last state %s\u0027 % \\"},{"line_number":1328,"context_line":"              (snapshot_name, project_name, state)"},{"line_number":1329,"context_line":"        raise exception.VolumeBackendAPIException(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":20,"id":"bbcd12ae_caf6a32d","line":1326,"in_reply_to":"2afe2389_45dbc046","updated":"2022-01-23 20:26:25.000000000","message":"Ack","commit_id":"693e126ec29d7997e7ff3e5868bf78ea8a38ea9e"},{"author":{"_account_id":28403,"name":"Naoki Saito","email":"nasaito@nec.com","username":"n-saito"},"change_message_id":"f0e17f9bd5dec89d3d79d89c222dd0fd59d65c81","unresolved":true,"context_lines":[{"line_number":1348,"context_line":"        if status_code \u003d\u003d httpstatus.NOT_FOUND:"},{"line_number":1349,"context_line":"            return None"},{"line_number":1350,"context_line":""},{"line_number":1351,"context_line":"        msg \u003d \u0027Unable to fetch UUID of snapshot named %s. status code \\"},{"line_number":1352,"context_line":"         %s data %s\u0027 % \\"},{"line_number":1353,"context_line":"              (lightos_snapshot_name, status_code, data)"},{"line_number":1354,"context_line":"        raise exception.VolumeBackendAPIException(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":20,"id":"845f0f4d_32cc7f51","line":1351,"updated":"2022-01-22 01:25:26.000000000","message":"same","commit_id":"693e126ec29d7997e7ff3e5868bf78ea8a38ea9e"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"db11a04a4ebdaccfa9c68e9941073daa4ab55d60","unresolved":false,"context_lines":[{"line_number":1348,"context_line":"        if status_code \u003d\u003d httpstatus.NOT_FOUND:"},{"line_number":1349,"context_line":"            return None"},{"line_number":1350,"context_line":""},{"line_number":1351,"context_line":"        msg \u003d \u0027Unable to fetch UUID of snapshot named %s. status code \\"},{"line_number":1352,"context_line":"         %s data %s\u0027 % \\"},{"line_number":1353,"context_line":"              (lightos_snapshot_name, status_code, data)"},{"line_number":1354,"context_line":"        raise exception.VolumeBackendAPIException(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":20,"id":"917a4e5a_5e63a19c","line":1351,"in_reply_to":"845f0f4d_32cc7f51","updated":"2022-01-23 20:26:25.000000000","message":"Ack","commit_id":"693e126ec29d7997e7ff3e5868bf78ea8a38ea9e"},{"author":{"_account_id":28403,"name":"Naoki Saito","email":"nasaito@nec.com","username":"n-saito"},"change_message_id":"f0e17f9bd5dec89d3d79d89c222dd0fd59d65c81","unresolved":true,"context_lines":[{"line_number":1396,"context_line":"            hostnqn,"},{"line_number":1397,"context_line":"            found_dsc)"},{"line_number":1398,"context_line":"        if not hostnqn:"},{"line_number":1399,"context_line":"            msg \u003d \u0027Connector (%s) did not contain a hostnqn, aborting\u0027 % ("},{"line_number":1400,"context_line":"                connector,)"},{"line_number":1401,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":1402,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"a078ba0b_b2c38818","line":1399,"updated":"2022-01-22 01:25:26.000000000","message":"same","commit_id":"693e126ec29d7997e7ff3e5868bf78ea8a38ea9e"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"5a04ac60a1fe6153577b29e5dd3101ee1b5be892","unresolved":false,"context_lines":[{"line_number":1396,"context_line":"            hostnqn,"},{"line_number":1397,"context_line":"            found_dsc)"},{"line_number":1398,"context_line":"        if not hostnqn:"},{"line_number":1399,"context_line":"            msg \u003d \u0027Connector (%s) did not contain a hostnqn, aborting\u0027 % ("},{"line_number":1400,"context_line":"                connector,)"},{"line_number":1401,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":1402,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"6dea9678_a294a78f","line":1399,"in_reply_to":"a078ba0b_b2c38818","updated":"2022-01-23 20:28:10.000000000","message":"Ack","commit_id":"693e126ec29d7997e7ff3e5868bf78ea8a38ea9e"},{"author":{"_account_id":28403,"name":"Naoki Saito","email":"nasaito@nec.com","username":"n-saito"},"change_message_id":"f0e17f9bd5dec89d3d79d89c222dd0fd59d65c81","unresolved":true,"context_lines":[{"line_number":1401,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":1402,"context_line":""},{"line_number":1403,"context_line":"        if not found_dsc:"},{"line_number":1404,"context_line":"            msg \u003d \u0027Connector (%s) did not indicate a discovery \\"},{"line_number":1405,"context_line":"            client, aborting\u0027 % ("},{"line_number":1406,"context_line":"                connector,)"},{"line_number":1407,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":20,"id":"280c6ccc_9e81d648","line":1404,"updated":"2022-01-22 01:25:26.000000000","message":"same","commit_id":"693e126ec29d7997e7ff3e5868bf78ea8a38ea9e"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"db11a04a4ebdaccfa9c68e9941073daa4ab55d60","unresolved":false,"context_lines":[{"line_number":1401,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":1402,"context_line":""},{"line_number":1403,"context_line":"        if not found_dsc:"},{"line_number":1404,"context_line":"            msg \u003d \u0027Connector (%s) did not indicate a discovery \\"},{"line_number":1405,"context_line":"            client, aborting\u0027 % ("},{"line_number":1406,"context_line":"                connector,)"},{"line_number":1407,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":20,"id":"dc7cbb07_0b80389e","line":1404,"in_reply_to":"280c6ccc_9e81d648","updated":"2022-01-23 20:26:25.000000000","message":"Ack","commit_id":"693e126ec29d7997e7ff3e5868bf78ea8a38ea9e"},{"author":{"_account_id":28403,"name":"Naoki Saito","email":"nasaito@nec.com","username":"n-saito"},"change_message_id":"f0e17f9bd5dec89d3d79d89c222dd0fd59d65c81","unresolved":true,"context_lines":[{"line_number":1411,"context_line":"        success \u003d self.add_volume_acl(project_name, volume, hostnqn)"},{"line_number":1412,"context_line":"        if not success or not self._wait_for_volume_acl("},{"line_number":1413,"context_line":"                project_name, lightos_volname, hostnqn, True):"},{"line_number":1414,"context_line":"            msg \u003d \u0027Could not add ACL for hostnqn %s LightOS volume \\"},{"line_number":1415,"context_line":"            %s, aborting\u0027 % (hostnqn, lightos_volname)"},{"line_number":1416,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":1417,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"351dd561_bca3b4cc","line":1414,"updated":"2022-01-22 01:25:26.000000000","message":"same","commit_id":"693e126ec29d7997e7ff3e5868bf78ea8a38ea9e"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"db11a04a4ebdaccfa9c68e9941073daa4ab55d60","unresolved":false,"context_lines":[{"line_number":1411,"context_line":"        success \u003d self.add_volume_acl(project_name, volume, hostnqn)"},{"line_number":1412,"context_line":"        if not success or not self._wait_for_volume_acl("},{"line_number":1413,"context_line":"                project_name, lightos_volname, hostnqn, True):"},{"line_number":1414,"context_line":"            msg \u003d \u0027Could not add ACL for hostnqn %s LightOS volume \\"},{"line_number":1415,"context_line":"            %s, aborting\u0027 % (hostnqn, lightos_volname)"},{"line_number":1416,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":1417,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"5645831b_19f52f0f","line":1414,"in_reply_to":"351dd561_bca3b4cc","updated":"2022-01-23 20:26:25.000000000","message":"Ack","commit_id":"693e126ec29d7997e7ff3e5868bf78ea8a38ea9e"},{"author":{"_account_id":28403,"name":"Naoki Saito","email":"nasaito@nec.com","username":"n-saito"},"change_message_id":"f0e17f9bd5dec89d3d79d89c222dd0fd59d65c81","unresolved":true,"context_lines":[{"line_number":1439,"context_line":"                self.remove_all_volume_acls(project_name, volume)"},{"line_number":1440,"context_line":"                return"},{"line_number":1441,"context_line":""},{"line_number":1442,"context_line":"            msg \u003d \u0027Connector (%s) did not return a hostnqn, aborting\u0027 % ("},{"line_number":1443,"context_line":"                connector,)"},{"line_number":1444,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":1445,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"f79a24c7_877e44b1","line":1442,"updated":"2022-01-22 01:25:26.000000000","message":"same","commit_id":"693e126ec29d7997e7ff3e5868bf78ea8a38ea9e"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"db11a04a4ebdaccfa9c68e9941073daa4ab55d60","unresolved":false,"context_lines":[{"line_number":1439,"context_line":"                self.remove_all_volume_acls(project_name, volume)"},{"line_number":1440,"context_line":"                return"},{"line_number":1441,"context_line":""},{"line_number":1442,"context_line":"            msg \u003d \u0027Connector (%s) did not return a hostnqn, aborting\u0027 % ("},{"line_number":1443,"context_line":"                connector,)"},{"line_number":1444,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":1445,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"c0c75026_89556087","line":1442,"in_reply_to":"f79a24c7_877e44b1","updated":"2022-01-23 20:26:25.000000000","message":"Ack","commit_id":"693e126ec29d7997e7ff3e5868bf78ea8a38ea9e"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"47304cd5f513fde2a573808e5b61f56cf29e0ec1","unresolved":true,"context_lines":[{"line_number":249,"context_line":"            body \u003d params"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"        else:"},{"line_number":252,"context_line":"            msg \u003d (_(\u0027Method %(method)s is not defined\u0027) %"},{"line_number":253,"context_line":"                   {\u0027method\u0027: method})"},{"line_number":254,"context_line":"            LOG.error(msg)"},{"line_number":255,"context_line":"            raise AssertionError(msg)"}],"source_content_type":"text/x-python","patch_set":21,"id":"14ff63a8_ebd97e12","line":252,"updated":"2022-01-27 22:43:30.000000000","message":"I think this general comment was made elsewhere, but just in case, we don\u0027t translate error messages.","commit_id":"30832d8d37596a060b5b0532953b2c5cc5c5a6be"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"6bf113f6b670baa3577e296e9f1a36547b90aa30","unresolved":false,"context_lines":[{"line_number":249,"context_line":"            body \u003d params"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"        else:"},{"line_number":252,"context_line":"            msg \u003d (_(\u0027Method %(method)s is not defined\u0027) %"},{"line_number":253,"context_line":"                   {\u0027method\u0027: method})"},{"line_number":254,"context_line":"            LOG.error(msg)"},{"line_number":255,"context_line":"            raise AssertionError(msg)"}],"source_content_type":"text/x-python","patch_set":21,"id":"4dc11e35_76cab9c4","line":252,"in_reply_to":"14ff63a8_ebd97e12","updated":"2022-01-30 09:25:41.000000000","message":"Ack","commit_id":"30832d8d37596a060b5b0532953b2c5cc5c5a6be"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"81f9a22dce8ba2ebe949c4a57b782cecfde9a2c1","unresolved":false,"context_lines":[{"line_number":389,"context_line":"    def get_driver_options(cls):"},{"line_number":390,"context_line":"        additional_opts \u003d cls._get_oslo_driver_opts("},{"line_number":391,"context_line":"            \u0027driver_ssl_cert_verify\u0027, \u0027reserved_percentage\u0027,"},{"line_number":392,"context_line":"            \u0027volume_backend_name\u0027)"},{"line_number":393,"context_line":"        return lightos_opts + additional_opts"},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"    def create_cloned_volume(self, volume, src_vref):"}],"source_content_type":"text/x-python","patch_set":21,"id":"ede3a4dd_0c46a77e","line":392,"range":{"start_line":392,"start_character":13,"end_line":392,"end_character":32},"updated":"2022-01-26 14:06:12.000000000","message":"afaik no driver is reporting this one, though now I\u0027m thinking they probably should...","commit_id":"30832d8d37596a060b5b0532953b2c5cc5c5a6be"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"aa3736c6895ea8625e57b8d6db761d03cb7dac77","unresolved":false,"context_lines":[{"line_number":389,"context_line":"    def get_driver_options(cls):"},{"line_number":390,"context_line":"        additional_opts \u003d cls._get_oslo_driver_opts("},{"line_number":391,"context_line":"            \u0027driver_ssl_cert_verify\u0027, \u0027reserved_percentage\u0027,"},{"line_number":392,"context_line":"            \u0027volume_backend_name\u0027)"},{"line_number":393,"context_line":"        return lightos_opts + additional_opts"},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"    def create_cloned_volume(self, volume, src_vref):"}],"source_content_type":"text/x-python","patch_set":21,"id":"41e64edd_8412d566","line":392,"range":{"start_line":392,"start_character":13,"end_line":392,"end_character":32},"in_reply_to":"ede3a4dd_0c46a77e","updated":"2022-01-26 20:14:28.000000000","message":"ok, so I am leaving it as is.","commit_id":"30832d8d37596a060b5b0532953b2c5cc5c5a6be"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"81f9a22dce8ba2ebe949c4a57b782cecfde9a2c1","unresolved":true,"context_lines":[{"line_number":766,"context_line":"            if status_code \u003d\u003d httpstatus.OK:"},{"line_number":767,"context_line":"                break"},{"line_number":768,"context_line":""},{"line_number":769,"context_line":"            LOG.warn("},{"line_number":770,"context_line":"                \"delete_volume for volume with LightOS UUID %s failed \\"},{"line_number":771,"context_line":"                with status code %s response %s\","},{"line_number":772,"context_line":"                lightos_uuid,"}],"source_content_type":"text/x-python","patch_set":21,"id":"bdcb8191_2347154a","line":769,"range":{"start_line":769,"start_character":16,"end_line":769,"end_character":20},"updated":"2022-01-26 14:06:12.000000000","message":"-1: warn is deprecated, we should be using warning instead","commit_id":"30832d8d37596a060b5b0532953b2c5cc5c5a6be"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"aa3736c6895ea8625e57b8d6db761d03cb7dac77","unresolved":false,"context_lines":[{"line_number":766,"context_line":"            if status_code \u003d\u003d httpstatus.OK:"},{"line_number":767,"context_line":"                break"},{"line_number":768,"context_line":""},{"line_number":769,"context_line":"            LOG.warn("},{"line_number":770,"context_line":"                \"delete_volume for volume with LightOS UUID %s failed \\"},{"line_number":771,"context_line":"                with status code %s response %s\","},{"line_number":772,"context_line":"                lightos_uuid,"}],"source_content_type":"text/x-python","patch_set":21,"id":"18d0da1e_bdeadedf","line":769,"range":{"start_line":769,"start_character":16,"end_line":769,"end_character":20},"in_reply_to":"bdcb8191_2347154a","updated":"2022-01-26 20:14:28.000000000","message":"Ack","commit_id":"30832d8d37596a060b5b0532953b2c5cc5c5a6be"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"81f9a22dce8ba2ebe949c4a57b782cecfde9a2c1","unresolved":true,"context_lines":[{"line_number":800,"context_line":"                   \u0027 %(uuid)s project %(project_name)s\u0027 % ("},{"line_number":801,"context_line":"                       dict(uuid\u003dlightos_uuid, project_name\u003dproject_name)))"},{"line_number":802,"context_line":""},{"line_number":803,"context_line":"            msg \u003d _(msg)"},{"line_number":804,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":805,"context_line":""},{"line_number":806,"context_line":"    def get_vol_by_id(self, volume):"}],"source_content_type":"text/x-python","patch_set":21,"id":"ac46b85b_f8576113","line":803,"range":{"start_line":803,"start_character":18,"end_line":803,"end_character":19},"updated":"2022-01-26 14:06:12.000000000","message":"-1: This is an async call, won\u0027t reach cinder client","commit_id":"30832d8d37596a060b5b0532953b2c5cc5c5a6be"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"aa3736c6895ea8625e57b8d6db761d03cb7dac77","unresolved":false,"context_lines":[{"line_number":800,"context_line":"                   \u0027 %(uuid)s project %(project_name)s\u0027 % ("},{"line_number":801,"context_line":"                       dict(uuid\u003dlightos_uuid, project_name\u003dproject_name)))"},{"line_number":802,"context_line":""},{"line_number":803,"context_line":"            msg \u003d _(msg)"},{"line_number":804,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmsg)"},{"line_number":805,"context_line":""},{"line_number":806,"context_line":"    def get_vol_by_id(self, volume):"}],"source_content_type":"text/x-python","patch_set":21,"id":"481fe55b_9b757634","line":803,"range":{"start_line":803,"start_character":18,"end_line":803,"end_character":19},"in_reply_to":"ac46b85b_f8576113","updated":"2022-01-26 20:14:28.000000000","message":"Ack","commit_id":"30832d8d37596a060b5b0532953b2c5cc5c5a6be"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"81f9a22dce8ba2ebe949c4a57b782cecfde9a2c1","unresolved":true,"context_lines":[{"line_number":814,"context_line":"        if not subsysnqn:"},{"line_number":815,"context_line":"            msg \u003d (\u0027LIGHTOS: Cinder driver requires the\u0027"},{"line_number":816,"context_line":"                   \u0027 LightOS cluster subsysnqn\u0027)"},{"line_number":817,"context_line":"            raise exception.VolumeBackendAPIException(message\u003d_(msg))"},{"line_number":818,"context_line":""},{"line_number":819,"context_line":"        hostnqn \u003d self.connector.get_hostnqn()"},{"line_number":820,"context_line":"        if not hostnqn:"}],"source_content_type":"text/x-python","patch_set":21,"id":"62eccec5_e6cc5a0b","line":817,"range":{"start_line":817,"start_character":62,"end_line":817,"end_character":63},"updated":"2022-01-26 14:06:12.000000000","message":"-1: this isn\u0027t called as a result as a cinder client call, so it will only appear in the logs.","commit_id":"30832d8d37596a060b5b0532953b2c5cc5c5a6be"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"aa3736c6895ea8625e57b8d6db761d03cb7dac77","unresolved":false,"context_lines":[{"line_number":814,"context_line":"        if not subsysnqn:"},{"line_number":815,"context_line":"            msg \u003d (\u0027LIGHTOS: Cinder driver requires the\u0027"},{"line_number":816,"context_line":"                   \u0027 LightOS cluster subsysnqn\u0027)"},{"line_number":817,"context_line":"            raise exception.VolumeBackendAPIException(message\u003d_(msg))"},{"line_number":818,"context_line":""},{"line_number":819,"context_line":"        hostnqn \u003d self.connector.get_hostnqn()"},{"line_number":820,"context_line":"        if not hostnqn:"}],"source_content_type":"text/x-python","patch_set":21,"id":"b2dea04a_ea48ff7f","line":817,"range":{"start_line":817,"start_character":62,"end_line":817,"end_character":63},"in_reply_to":"62eccec5_e6cc5a0b","updated":"2022-01-26 20:14:28.000000000","message":"Ack","commit_id":"30832d8d37596a060b5b0532953b2c5cc5c5a6be"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"81f9a22dce8ba2ebe949c4a57b782cecfde9a2c1","unresolved":true,"context_lines":[{"line_number":820,"context_line":"        if not hostnqn:"},{"line_number":821,"context_line":"            msg \u003d (\"LIGHTOS: Cinder driver requires a local hostnqn for\""},{"line_number":822,"context_line":"                   \" image_to/from_volume operations\")"},{"line_number":823,"context_line":"            raise exception.VolumeBackendAPIException(message\u003d_(msg))"},{"line_number":824,"context_line":""},{"line_number":825,"context_line":"    def get_cluster_info(self):"},{"line_number":826,"context_line":"        status_code, cluster_info \u003d self.cluster.send_cmd("}],"source_content_type":"text/x-python","patch_set":21,"id":"927e13e9_4d5289ee","line":823,"range":{"start_line":823,"start_character":62,"end_line":823,"end_character":63},"updated":"2022-01-26 14:06:12.000000000","message":"-1: this isn\u0027t called as a result as a cinder client call, so it will only appear in the logs.","commit_id":"30832d8d37596a060b5b0532953b2c5cc5c5a6be"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"aa3736c6895ea8625e57b8d6db761d03cb7dac77","unresolved":false,"context_lines":[{"line_number":820,"context_line":"        if not hostnqn:"},{"line_number":821,"context_line":"            msg \u003d (\"LIGHTOS: Cinder driver requires a local hostnqn for\""},{"line_number":822,"context_line":"                   \" image_to/from_volume operations\")"},{"line_number":823,"context_line":"            raise exception.VolumeBackendAPIException(message\u003d_(msg))"},{"line_number":824,"context_line":""},{"line_number":825,"context_line":"    def get_cluster_info(self):"},{"line_number":826,"context_line":"        status_code, cluster_info \u003d self.cluster.send_cmd("}],"source_content_type":"text/x-python","patch_set":21,"id":"70b7a9e7_23878efd","line":823,"range":{"start_line":823,"start_character":62,"end_line":823,"end_character":63},"in_reply_to":"927e13e9_4d5289ee","updated":"2022-01-26 20:14:28.000000000","message":"Ack","commit_id":"30832d8d37596a060b5b0532953b2c5cc5c5a6be"}],"doc/source/configuration/block-storage/drivers/lightbits-lightos-driver.rst":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"56d46bdafa56c7c200476c62aa4a07825d93e5bb","unresolved":true,"context_lines":[{"line_number":43,"context_line":"The LightOS OpenStack driver has four components:"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"- Cinder driver"},{"line_number":46,"context_line":"- Nova libvirt volume driver"},{"line_number":47,"context_line":"- os_brick initiator connector"},{"line_number":48,"context_line":"- LightOS discovery-client"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"343e3273_95d0abf5","line":46,"range":{"start_line":46,"start_character":0,"end_line":46,"end_character":28},"updated":"2022-01-17 17:59:36.000000000","message":"?: I assume this is the standard libvirt driver, right?","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b0fee75613ed5e061916ae4b4a4a12945bbbccf8","unresolved":true,"context_lines":[{"line_number":43,"context_line":"The LightOS OpenStack driver has four components:"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"- Cinder driver"},{"line_number":46,"context_line":"- Nova libvirt volume driver"},{"line_number":47,"context_line":"- os_brick initiator connector"},{"line_number":48,"context_line":"- LightOS discovery-client"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"c5770677_2ef51854","line":46,"range":{"start_line":46,"start_character":0,"end_line":46,"end_character":28},"in_reply_to":"343e3273_95d0abf5","updated":"2022-01-18 00:13:54.000000000","message":"I think it\u0027s a custom driver: https://review.opendev.org/c/openstack/nova/+/821606","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"36b1ebe7dfece1eff46514be242ddc09c4997367","unresolved":false,"context_lines":[{"line_number":43,"context_line":"The LightOS OpenStack driver has four components:"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"- Cinder driver"},{"line_number":46,"context_line":"- Nova libvirt volume driver"},{"line_number":47,"context_line":"- os_brick initiator connector"},{"line_number":48,"context_line":"- LightOS discovery-client"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"7af572e5_f834c98f","line":46,"range":{"start_line":46,"start_character":0,"end_line":46,"end_character":28},"in_reply_to":"c5770677_2ef51854","updated":"2022-01-18 18:16:00.000000000","message":"As Brian noted, custom (minimal) driver.","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"56d46bdafa56c7c200476c62aa4a07825d93e5bb","unresolved":true,"context_lines":[{"line_number":45,"context_line":"- Cinder driver"},{"line_number":46,"context_line":"- Nova libvirt volume driver"},{"line_number":47,"context_line":"- os_brick initiator connector"},{"line_number":48,"context_line":"- LightOS discovery-client"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"The os_brick connector uses the LightOS ``discovery-client`` to"},{"line_number":51,"context_line":"communicate with the LightOS discovery services."}],"source_content_type":"text/x-rst","patch_set":13,"id":"4933093f_b18a1db0","line":48,"range":{"start_line":48,"start_character":0,"end_line":48,"end_character":26},"updated":"2022-01-17 17:59:36.000000000","message":"Shouldn\u0027t we point to LightOS documentation on how to get this?","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"36b1ebe7dfece1eff46514be242ddc09c4997367","unresolved":false,"context_lines":[{"line_number":45,"context_line":"- Cinder driver"},{"line_number":46,"context_line":"- Nova libvirt volume driver"},{"line_number":47,"context_line":"- os_brick initiator connector"},{"line_number":48,"context_line":"- LightOS discovery-client"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"The os_brick connector uses the LightOS ``discovery-client`` to"},{"line_number":51,"context_line":"communicate with the LightOS discovery services."}],"source_content_type":"text/x-rst","patch_set":13,"id":"70586fd5_89aa7cb3","line":48,"range":{"start_line":48,"start_character":0,"end_line":48,"end_character":26},"in_reply_to":"4933093f_b18a1db0","updated":"2022-01-18 18:16:00.000000000","message":"For the time being it is provided with Lightbits LightOS. I updated the doc.","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"9c5ff77a9a6e94a3b202df414ae7b424dc29e235","unresolved":true,"context_lines":[{"line_number":62,"context_line":"      enabled_backends \u003d lightos,\u003cany other storage backend you use\u003e"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"And"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"   .. code-block:: ini"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"49bae289_8b16f42c","line":65,"range":{"start_line":65,"start_character":0,"end_line":65,"end_character":3},"updated":"2022-01-17 18:51:23.000000000","message":"nit: lowercase \u0027and\u0027","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"36b1ebe7dfece1eff46514be242ddc09c4997367","unresolved":false,"context_lines":[{"line_number":62,"context_line":"      enabled_backends \u003d lightos,\u003cany other storage backend you use\u003e"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"And"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"   .. code-block:: ini"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"0db73fcb_f3994784","line":65,"range":{"start_line":65,"start_character":0,"end_line":65,"end_character":3},"in_reply_to":"49bae289_8b16f42c","updated":"2022-01-18 18:16:00.000000000","message":"Ack","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"9c5ff77a9a6e94a3b202df414ae7b424dc29e235","unresolved":true,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"   .. code-block:: ini"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"      [lightos]"},{"line_number":70,"context_line":"      volume_driver \u003d cinder.volume.drivers.lightos.LightOSVolumeDriver"},{"line_number":71,"context_line":"      lightos_api_address \u003d \u003cTARGET_ACCESS_IPS\u003e"},{"line_number":72,"context_line":"      lightos_api_port \u003d 443"},{"line_number":73,"context_line":"      lightos_jwt\u003d\u003cLIGHTOS_JWT\u003e"},{"line_number":74,"context_line":"      lightos_default_compression \u003d False"},{"line_number":75,"context_line":"      lightos_default_num_replicas \u003d 3"},{"line_number":76,"context_line":"      lightos_api_service_timeout \u003d 30"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"``TARGET_ACCESS_IPS`` are the LightOS cluster nodes access"},{"line_number":79,"context_line":"IPs. Multiple nodes should be separated by commas. For example:"}],"source_content_type":"text/x-rst","patch_set":13,"id":"c9e2c680_5e125492","line":76,"range":{"start_line":69,"start_character":0,"end_line":76,"end_character":38},"updated":"2022-01-17 18:51:23.000000000","message":"No indent here either","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"36b1ebe7dfece1eff46514be242ddc09c4997367","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"   .. code-block:: ini"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"      [lightos]"},{"line_number":70,"context_line":"      volume_driver \u003d cinder.volume.drivers.lightos.LightOSVolumeDriver"},{"line_number":71,"context_line":"      lightos_api_address \u003d \u003cTARGET_ACCESS_IPS\u003e"},{"line_number":72,"context_line":"      lightos_api_port \u003d 443"},{"line_number":73,"context_line":"      lightos_jwt\u003d\u003cLIGHTOS_JWT\u003e"},{"line_number":74,"context_line":"      lightos_default_compression \u003d False"},{"line_number":75,"context_line":"      lightos_default_num_replicas \u003d 3"},{"line_number":76,"context_line":"      lightos_api_service_timeout \u003d 30"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"``TARGET_ACCESS_IPS`` are the LightOS cluster nodes access"},{"line_number":79,"context_line":"IPs. Multiple nodes should be separated by commas. For example:"}],"source_content_type":"text/x-rst","patch_set":13,"id":"16cf94fe_a460d2ed","line":76,"range":{"start_line":69,"start_character":0,"end_line":76,"end_character":38},"in_reply_to":"c9e2c680_5e125492","updated":"2022-01-18 18:16:00.000000000","message":"Ack","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"9c5ff77a9a6e94a3b202df414ae7b424dc29e235","unresolved":true,"context_lines":[{"line_number":75,"context_line":"      lightos_default_num_replicas \u003d 3"},{"line_number":76,"context_line":"      lightos_api_service_timeout \u003d 30"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"``TARGET_ACCESS_IPS`` are the LightOS cluster nodes access"},{"line_number":79,"context_line":"IPs. Multiple nodes should be separated by commas. For example:"},{"line_number":80,"context_line":"``lightos_api_address \u003d 192.168.67.78,192.168.34.56,192.168.12.17``."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"These IPs are where the driver looks for the LightOS clusters\u0027 REST"},{"line_number":83,"context_line":"API endpoints."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"``LIGHTOS_JWT`` is the JWT (JSON Web Token) that is located at the"},{"line_number":86,"context_line":"LightOS installation controller. You can find the JWT at"},{"line_number":87,"context_line":"``~/lightos-default-admin-jwt``."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"The default compression setting is False (i.e., data is"},{"line_number":90,"context_line":"uncompressed). The default compression setting can also be True."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"The default number of replicas for volumes is 3, and valid values for"},{"line_number":93,"context_line":"``lightos_default_num_replicas`` are 1, 2, or 3."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"The default amount of time to wait until deciding that an API endpoint"},{"line_number":96,"context_line":"will not respond is 30 seconds. Increase this to wait longer, decrease"},{"line_number":97,"context_line":"for shorter timeouts."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"Creating volumes with non-default compression and the number of"},{"line_number":100,"context_line":"replicas settings can be done through the volume types mechanism. To"}],"source_content_type":"text/x-rst","patch_set":13,"id":"965b899e_a6ee61fa","line":97,"range":{"start_line":78,"start_character":0,"end_line":97,"end_character":21},"updated":"2022-01-17 18:51:23.000000000","message":"Maybe make these bullet points","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"36b1ebe7dfece1eff46514be242ddc09c4997367","unresolved":false,"context_lines":[{"line_number":75,"context_line":"      lightos_default_num_replicas \u003d 3"},{"line_number":76,"context_line":"      lightos_api_service_timeout \u003d 30"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"``TARGET_ACCESS_IPS`` are the LightOS cluster nodes access"},{"line_number":79,"context_line":"IPs. Multiple nodes should be separated by commas. For example:"},{"line_number":80,"context_line":"``lightos_api_address \u003d 192.168.67.78,192.168.34.56,192.168.12.17``."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"These IPs are where the driver looks for the LightOS clusters\u0027 REST"},{"line_number":83,"context_line":"API endpoints."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"``LIGHTOS_JWT`` is the JWT (JSON Web Token) that is located at the"},{"line_number":86,"context_line":"LightOS installation controller. You can find the JWT at"},{"line_number":87,"context_line":"``~/lightos-default-admin-jwt``."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"The default compression setting is False (i.e., data is"},{"line_number":90,"context_line":"uncompressed). The default compression setting can also be True."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"The default number of replicas for volumes is 3, and valid values for"},{"line_number":93,"context_line":"``lightos_default_num_replicas`` are 1, 2, or 3."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"The default amount of time to wait until deciding that an API endpoint"},{"line_number":96,"context_line":"will not respond is 30 seconds. Increase this to wait longer, decrease"},{"line_number":97,"context_line":"for shorter timeouts."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"Creating volumes with non-default compression and the number of"},{"line_number":100,"context_line":"replicas settings can be done through the volume types mechanism. To"}],"source_content_type":"text/x-rst","patch_set":13,"id":"034028c8_2ed01543","line":97,"range":{"start_line":78,"start_character":0,"end_line":97,"end_character":21},"in_reply_to":"965b899e_a6ee61fa","updated":"2022-01-18 18:16:00.000000000","message":"Ack","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"9c5ff77a9a6e94a3b202df414ae7b424dc29e235","unresolved":true,"context_lines":[{"line_number":98,"context_line":""},{"line_number":99,"context_line":"Creating volumes with non-default compression and the number of"},{"line_number":100,"context_line":"replicas settings can be done through the volume types mechanism. To"},{"line_number":101,"context_line":"create a new volume type with compression enabled: ``$ openstack"},{"line_number":102,"context_line":"volume type create --property compression\u003d\u0027\u003cis\u003e True\u0027"},{"line_number":103,"context_line":"volume-with-compression``"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"To create a new volume type with one replica: ``$ openstack volume"},{"line_number":106,"context_line":"type create --property lightos:num_replicas\u003d1"}],"source_content_type":"text/x-rst","patch_set":13,"id":"05c28bf2_08976d18","line":103,"range":{"start_line":101,"start_character":51,"end_line":103,"end_character":25},"updated":"2022-01-17 18:51:23.000000000","message":"Make this a code block","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"36b1ebe7dfece1eff46514be242ddc09c4997367","unresolved":false,"context_lines":[{"line_number":98,"context_line":""},{"line_number":99,"context_line":"Creating volumes with non-default compression and the number of"},{"line_number":100,"context_line":"replicas settings can be done through the volume types mechanism. To"},{"line_number":101,"context_line":"create a new volume type with compression enabled: ``$ openstack"},{"line_number":102,"context_line":"volume type create --property compression\u003d\u0027\u003cis\u003e True\u0027"},{"line_number":103,"context_line":"volume-with-compression``"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"To create a new volume type with one replica: ``$ openstack volume"},{"line_number":106,"context_line":"type create --property lightos:num_replicas\u003d1"}],"source_content_type":"text/x-rst","patch_set":13,"id":"0dadc246_7d6aab3c","line":103,"range":{"start_line":101,"start_character":51,"end_line":103,"end_character":25},"in_reply_to":"05c28bf2_08976d18","updated":"2022-01-18 18:16:00.000000000","message":"Ack","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"9c5ff77a9a6e94a3b202df414ae7b424dc29e235","unresolved":true,"context_lines":[{"line_number":102,"context_line":"volume type create --property compression\u003d\u0027\u003cis\u003e True\u0027"},{"line_number":103,"context_line":"volume-with-compression``"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"To create a new volume type with one replica: ``$ openstack volume"},{"line_number":106,"context_line":"type create --property lightos:num_replicas\u003d1"},{"line_number":107,"context_line":"volume-with-one-replica``"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"To create a new type for a compressed volume with three replicas:"},{"line_number":110,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"f67817f8_3cad9df7","line":107,"range":{"start_line":105,"start_character":46,"end_line":107,"end_character":25},"updated":"2022-01-17 18:51:23.000000000","message":"code block","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"36b1ebe7dfece1eff46514be242ddc09c4997367","unresolved":false,"context_lines":[{"line_number":102,"context_line":"volume type create --property compression\u003d\u0027\u003cis\u003e True\u0027"},{"line_number":103,"context_line":"volume-with-compression``"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"To create a new volume type with one replica: ``$ openstack volume"},{"line_number":106,"context_line":"type create --property lightos:num_replicas\u003d1"},{"line_number":107,"context_line":"volume-with-one-replica``"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"To create a new type for a compressed volume with three replicas:"},{"line_number":110,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"1b8f071d_99ec93e6","line":107,"range":{"start_line":105,"start_character":46,"end_line":107,"end_character":25},"in_reply_to":"f67817f8_3cad9df7","updated":"2022-01-18 18:16:00.000000000","message":"Ack","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"9c5ff77a9a6e94a3b202df414ae7b424dc29e235","unresolved":true,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"To create a new type for a compressed volume with three replicas:"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"``$ openstack volume type create --property compression\u003d\u0027\u003cis\u003e"},{"line_number":112,"context_line":"True\u0027 --property lightos:num_replicas\u003d3"},{"line_number":113,"context_line":"volume-with-three-replicas-and-compression``"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"Then create a new volume with one of these volume types: ``$ openstack"},{"line_number":116,"context_line":"volume create --size \u003csize\u003e --type \u003ctype name\u003e \u003cvol name\u003e``"}],"source_content_type":"text/x-rst","patch_set":13,"id":"cd6491f2_89baf231","line":113,"range":{"start_line":111,"start_character":0,"end_line":113,"end_character":44},"updated":"2022-01-17 18:51:23.000000000","message":"code block","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"36b1ebe7dfece1eff46514be242ddc09c4997367","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"To create a new type for a compressed volume with three replicas:"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"``$ openstack volume type create --property compression\u003d\u0027\u003cis\u003e"},{"line_number":112,"context_line":"True\u0027 --property lightos:num_replicas\u003d3"},{"line_number":113,"context_line":"volume-with-three-replicas-and-compression``"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"Then create a new volume with one of these volume types: ``$ openstack"},{"line_number":116,"context_line":"volume create --size \u003csize\u003e --type \u003ctype name\u003e \u003cvol name\u003e``"}],"source_content_type":"text/x-rst","patch_set":13,"id":"2b1d8a7c_dcfbeaf6","line":113,"range":{"start_line":111,"start_character":0,"end_line":113,"end_character":44},"in_reply_to":"cd6491f2_89baf231","updated":"2022-01-18 18:16:00.000000000","message":"Ack","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"9c5ff77a9a6e94a3b202df414ae7b424dc29e235","unresolved":true,"context_lines":[{"line_number":112,"context_line":"True\u0027 --property lightos:num_replicas\u003d3"},{"line_number":113,"context_line":"volume-with-three-replicas-and-compression``"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"Then create a new volume with one of these volume types: ``$ openstack"},{"line_number":116,"context_line":"volume create --size \u003csize\u003e --type \u003ctype name\u003e \u003cvol name\u003e``"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"NVNe/TCP and Asymmetric Namespace Access (ANA)"},{"line_number":119,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":13,"id":"0b6ddbcf_3001d689","line":116,"range":{"start_line":115,"start_character":57,"end_line":116,"end_character":59},"updated":"2022-01-17 18:51:23.000000000","message":"code block","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"36b1ebe7dfece1eff46514be242ddc09c4997367","unresolved":false,"context_lines":[{"line_number":112,"context_line":"True\u0027 --property lightos:num_replicas\u003d3"},{"line_number":113,"context_line":"volume-with-three-replicas-and-compression``"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"Then create a new volume with one of these volume types: ``$ openstack"},{"line_number":116,"context_line":"volume create --size \u003csize\u003e --type \u003ctype name\u003e \u003cvol name\u003e``"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"NVNe/TCP and Asymmetric Namespace Access (ANA)"},{"line_number":119,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":13,"id":"719cef75_9cef011e","line":116,"range":{"start_line":115,"start_character":57,"end_line":116,"end_character":59},"in_reply_to":"0b6ddbcf_3001d689","updated":"2022-01-18 18:16:00.000000000","message":"Ack","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b0fee75613ed5e061916ae4b4a4a12945bbbccf8","unresolved":true,"context_lines":[{"line_number":118,"context_line":"NVNe/TCP and Asymmetric Namespace Access (ANA)"},{"line_number":119,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"LightOS clusters expose their volumes using NVMe/TCP ANA. ANA is a"},{"line_number":122,"context_line":"relatively new feature in the NVMe/TCP stack in Linux. It requires a"},{"line_number":123,"context_line":"fairly recent Linux kernel and nvme-cli utilities. Each compute host"},{"line_number":124,"context_line":"in the OpenStack cluster needs to be ANA-capable to provide OpenStack"}],"source_content_type":"text/x-rst","patch_set":13,"id":"b3dfce7c_649d3af8","line":121,"range":{"start_line":121,"start_character":53,"end_line":121,"end_character":56},"updated":"2022-01-18 00:13:54.000000000","message":"probably worth spelling this out as \"Asynchronous Namespace Access\" the first time you use it (unless you\u0027re referring to something else).","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"36b1ebe7dfece1eff46514be242ddc09c4997367","unresolved":false,"context_lines":[{"line_number":118,"context_line":"NVNe/TCP and Asymmetric Namespace Access (ANA)"},{"line_number":119,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"LightOS clusters expose their volumes using NVMe/TCP ANA. ANA is a"},{"line_number":122,"context_line":"relatively new feature in the NVMe/TCP stack in Linux. It requires a"},{"line_number":123,"context_line":"fairly recent Linux kernel and nvme-cli utilities. Each compute host"},{"line_number":124,"context_line":"in the OpenStack cluster needs to be ANA-capable to provide OpenStack"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ca924892_ac5bc051","line":121,"range":{"start_line":121,"start_character":53,"end_line":121,"end_character":56},"in_reply_to":"b3dfce7c_649d3af8","updated":"2022-01-18 18:16:00.000000000","message":"definitely, done","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"9c5ff77a9a6e94a3b202df414ae7b424dc29e235","unresolved":true,"context_lines":[{"line_number":119,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"LightOS clusters expose their volumes using NVMe/TCP ANA. ANA is a"},{"line_number":122,"context_line":"relatively new feature in the NVMe/TCP stack in Linux. It requires a"},{"line_number":123,"context_line":"fairly recent Linux kernel and nvme-cli utilities. Each compute host"},{"line_number":124,"context_line":"in the OpenStack cluster needs to be ANA-capable to provide OpenStack"},{"line_number":125,"context_line":"VMs with LightOS volumes over NVMe/TCP. For more information on how to"},{"line_number":126,"context_line":"set up the compute nodes to use ANA, see the CentOS Linux Cluster"}],"source_content_type":"text/x-rst","patch_set":13,"id":"9c1977a7_a387db61","line":123,"range":{"start_line":122,"start_character":55,"end_line":123,"end_character":49},"updated":"2022-01-17 18:51:23.000000000","message":"Let\u0027s be specific here. \nRemember that Yoga will be based on Ubuntu 20.04 so take that into consideration.\nIf you have a minimum version of nvme-cli then you should consider adding to the to requirements or driver-requirements files. \nI would vote for adding it to the os-brick package as this will be required by multiple backends that use the NVMe connector as well as your connector.\nCheck for backwards compatability with the version suppolied with Ubuntu 20.04 as that is what the curreent code will be using.","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"7bce5f8a3231fad68f3e55780eeed5eff2aaaf68","unresolved":false,"context_lines":[{"line_number":119,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"LightOS clusters expose their volumes using NVMe/TCP ANA. ANA is a"},{"line_number":122,"context_line":"relatively new feature in the NVMe/TCP stack in Linux. It requires a"},{"line_number":123,"context_line":"fairly recent Linux kernel and nvme-cli utilities. Each compute host"},{"line_number":124,"context_line":"in the OpenStack cluster needs to be ANA-capable to provide OpenStack"},{"line_number":125,"context_line":"VMs with LightOS volumes over NVMe/TCP. For more information on how to"},{"line_number":126,"context_line":"set up the compute nodes to use ANA, see the CentOS Linux Cluster"}],"source_content_type":"text/x-rst","patch_set":13,"id":"6946f403_7d03ab27","line":123,"range":{"start_line":122,"start_character":55,"end_line":123,"end_character":49},"in_reply_to":"7d01b498_c52b62d2","updated":"2022-01-18 18:35:15.000000000","message":"Confirmed that Ubuntu 20.04 for the compute nodes is sufficient. Yuval will upload a doc update soonish.","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"36b1ebe7dfece1eff46514be242ddc09c4997367","unresolved":true,"context_lines":[{"line_number":119,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"LightOS clusters expose their volumes using NVMe/TCP ANA. ANA is a"},{"line_number":122,"context_line":"relatively new feature in the NVMe/TCP stack in Linux. It requires a"},{"line_number":123,"context_line":"fairly recent Linux kernel and nvme-cli utilities. Each compute host"},{"line_number":124,"context_line":"in the OpenStack cluster needs to be ANA-capable to provide OpenStack"},{"line_number":125,"context_line":"VMs with LightOS volumes over NVMe/TCP. For more information on how to"},{"line_number":126,"context_line":"set up the compute nodes to use ANA, see the CentOS Linux Cluster"}],"source_content_type":"text/x-rst","patch_set":13,"id":"7d01b498_c52b62d2","line":123,"range":{"start_line":122,"start_character":55,"end_line":123,"end_character":49},"in_reply_to":"9c1977a7_a387db61","updated":"2022-01-18 18:16:00.000000000","message":"Thanks, we are checking the specific requirements and whether Ubuntu 20.04 meets them.","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"56d46bdafa56c7c200476c62aa4a07825d93e5bb","unresolved":true,"context_lines":[{"line_number":130,"context_line":"Note"},{"line_number":131,"context_line":"~~~~"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"In the current version, if any of the cluster nodes changes its access"},{"line_number":134,"context_line":"IPs, the Cinder driver\u0027s configuration file should be updated with the"},{"line_number":135,"context_line":"cluster nodes access IPs and restarted. As long as the Cinder driver"},{"line_number":136,"context_line":"can access at least one cluster access IP it will maintain API"},{"line_number":137,"context_line":"connectivity with the LightOS cluster, but will be susceptible to"},{"line_number":138,"context_line":"cluster API endpoint failures, since it might not be aware of the full"},{"line_number":139,"context_line":"list of available API endpoints."}],"source_content_type":"text/x-rst","patch_set":13,"id":"b14f2a67_33481927","line":139,"range":{"start_line":133,"start_character":0,"end_line":139,"end_character":32},"updated":"2022-01-17 17:59:36.000000000","message":"?: Won\u0027t this be also a problem for all instances that have volumes attached?","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"36b1ebe7dfece1eff46514be242ddc09c4997367","unresolved":false,"context_lines":[{"line_number":130,"context_line":"Note"},{"line_number":131,"context_line":"~~~~"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"In the current version, if any of the cluster nodes changes its access"},{"line_number":134,"context_line":"IPs, the Cinder driver\u0027s configuration file should be updated with the"},{"line_number":135,"context_line":"cluster nodes access IPs and restarted. As long as the Cinder driver"},{"line_number":136,"context_line":"can access at least one cluster access IP it will maintain API"},{"line_number":137,"context_line":"connectivity with the LightOS cluster, but will be susceptible to"},{"line_number":138,"context_line":"cluster API endpoint failures, since it might not be aware of the full"},{"line_number":139,"context_line":"list of available API endpoints."}],"source_content_type":"text/x-rst","patch_set":13,"id":"68a07acd_502d669f","line":139,"range":{"start_line":133,"start_character":0,"end_line":139,"end_character":32},"in_reply_to":"b14f2a67_33481927","updated":"2022-01-18 18:16:00.000000000","message":"No,the data path IP discovery is handled transparently by the LightOS discovery-client and LightOS discovery-services over NVMe/TCP. It\u0027s only the access (API) IPs that do not currently have an automatic discovery mechanism or virtual IP in front of them and thus need to be specified in the cinder.conf and updated when *all* of them change -- if even one remains available we\u0027ll learn about the rest automatically.","commit_id":"a66eed3eec94b1ba0b1e5e7c34899d85f4f71ba9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"37c8b6cc98b24454beaa71b8e4d1ee86f8df114d","unresolved":true,"context_lines":[{"line_number":138,"context_line":".. config-table::"},{"line_number":139,"context_line":"   :config-target: Lightbits LightOS"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"   cinder.volume.drivers.kioxia.kumoscale"}],"source_content_type":"text/x-rst","patch_set":16,"id":"df176e90_a13a6976","line":141,"range":{"start_line":141,"start_character":3,"end_line":141,"end_character":41},"updated":"2022-01-20 13:18:37.000000000","message":"-1: Wrong driver, so we render incorrect configuration options: https://storage.bhs.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_c66/821602/16/check/openstack-tox-docs/c66b058/docs/configuration/block-storage/drivers/lightbits-lightos-driver.html#driver-options","commit_id":"4cc67357c17a72aa5fe42816df4f34d574bf1da8"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"c435096eef8ef826f4c4e3654f099afd264092aa","unresolved":false,"context_lines":[{"line_number":138,"context_line":".. config-table::"},{"line_number":139,"context_line":"   :config-target: Lightbits LightOS"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"   cinder.volume.drivers.kioxia.kumoscale"}],"source_content_type":"text/x-rst","patch_set":16,"id":"fa7d76b6_75fb0f81","line":141,"range":{"start_line":141,"start_character":3,"end_line":141,"end_character":41},"in_reply_to":"64ac60a6_bf917574","updated":"2022-01-20 15:40:32.000000000","message":"Ack","commit_id":"4cc67357c17a72aa5fe42816df4f34d574bf1da8"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"9599e952cb4bad3bd33b48910a393dd0eeaa2ac9","unresolved":true,"context_lines":[{"line_number":138,"context_line":".. config-table::"},{"line_number":139,"context_line":"   :config-target: Lightbits LightOS"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"   cinder.volume.drivers.kioxia.kumoscale"}],"source_content_type":"text/x-rst","patch_set":16,"id":"64ac60a6_bf917574","line":141,"range":{"start_line":141,"start_character":3,"end_line":141,"end_character":41},"in_reply_to":"df176e90_a13a6976","updated":"2022-01-20 15:11:20.000000000","message":"Thanks, a debug change snuck in... Fixing now.","commit_id":"4cc67357c17a72aa5fe42816df4f34d574bf1da8"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"152141cbcbac3e2733605584ce78de80c97d0551","unresolved":true,"context_lines":[{"line_number":138,"context_line":".. config-table::"},{"line_number":139,"context_line":"   :config-target: Lightbits LightOS"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"   cinder.volume.drivers.kioxia.kumoscale"}],"source_content_type":"text/x-rst","patch_set":17,"id":"19b318f7_064f144b","line":141,"updated":"2022-01-20 15:07:51.000000000","message":"Yuval, looks like one of our attempts to figure out the docs issue snuck in. Obviously this should be the LightOS driver... Please fix. Thanks!","commit_id":"5bcae81162300ec0b455225ec8343c3b4d945f99"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"2402c33a82dc092dd59fcb991d1cdac767fc8c78","unresolved":false,"context_lines":[{"line_number":138,"context_line":".. config-table::"},{"line_number":139,"context_line":"   :config-target: Lightbits LightOS"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"   cinder.volume.drivers.kioxia.kumoscale"}],"source_content_type":"text/x-rst","patch_set":17,"id":"cfb736f5_e10672d7","line":141,"in_reply_to":"19b318f7_064f144b","updated":"2022-01-30 09:33:07.000000000","message":"Done","commit_id":"5bcae81162300ec0b455225ec8343c3b4d945f99"},{"author":{"_account_id":28403,"name":"Naoki Saito","email":"nasaito@nec.com","username":"n-saito"},"change_message_id":"95a7baef749ef221d7e8393c37afcf230e9ba1b3","unresolved":true,"context_lines":[{"line_number":25,"context_line":"- Delete snapshot"},{"line_number":26,"context_line":"- Create volume from snapshot"},{"line_number":27,"context_line":"- Create volume from volume (clone)"},{"line_number":28,"context_line":"- Extend a volume"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"LightOS OpenStack Driver Components"},{"line_number":31,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":19,"id":"4e716ca6_fe82ee6d","line":28,"updated":"2022-01-21 09:08:36.000000000","message":"This is a duplicate of L23.","commit_id":"663891e17ce78408939163b048d30c5cf6dca0d6"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"2402c33a82dc092dd59fcb991d1cdac767fc8c78","unresolved":false,"context_lines":[{"line_number":25,"context_line":"- Delete snapshot"},{"line_number":26,"context_line":"- Create volume from snapshot"},{"line_number":27,"context_line":"- Create volume from volume (clone)"},{"line_number":28,"context_line":"- Extend a volume"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"LightOS OpenStack Driver Components"},{"line_number":31,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":19,"id":"f5215c5c_ad9f2457","line":28,"in_reply_to":"038df1d3_918c5c4e","updated":"2022-01-30 09:33:07.000000000","message":"Done","commit_id":"663891e17ce78408939163b048d30c5cf6dca0d6"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"3b43c9c7df77e9edfa71679c13f8d75cff2eabd0","unresolved":true,"context_lines":[{"line_number":25,"context_line":"- Delete snapshot"},{"line_number":26,"context_line":"- Create volume from snapshot"},{"line_number":27,"context_line":"- Create volume from volume (clone)"},{"line_number":28,"context_line":"- Extend a volume"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"LightOS OpenStack Driver Components"},{"line_number":31,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":19,"id":"038df1d3_918c5c4e","line":28,"in_reply_to":"4e716ca6_fe82ee6d","updated":"2022-01-21 12:50:27.000000000","message":"thanks","commit_id":"663891e17ce78408939163b048d30c5cf6dca0d6"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"47304cd5f513fde2a573808e5b61f56cf29e0ec1","unresolved":true,"context_lines":[{"line_number":68,"context_line":"  IPs. Multiple nodes should be separated by commas. For example:"},{"line_number":69,"context_line":"  ``lightos_api_address \u003d"},{"line_number":70,"context_line":"  192.168.67.78,192.168.34.56,192.168.12.17``. These IPs are where the"},{"line_number":71,"context_line":"  driver looks for the LightOS clusters REST API servers."},{"line_number":72,"context_line":"- ``LIGHTOS_JWT`` is the JWT (JSON Web Token) that is located at the"},{"line_number":73,"context_line":"  LightOS installation controller. You can find the jwt at"},{"line_number":74,"context_line":"  ``~/lightos-default-admin-jwt``."}],"source_content_type":"text/x-rst","patch_set":21,"id":"8b0be4d7_cb14d706","line":71,"range":{"start_line":71,"start_character":31,"end_line":71,"end_character":39},"updated":"2022-01-27 22:43:30.000000000","message":"nit:  clusters\u0027","commit_id":"30832d8d37596a060b5b0532953b2c5cc5c5a6be"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"2402c33a82dc092dd59fcb991d1cdac767fc8c78","unresolved":false,"context_lines":[{"line_number":68,"context_line":"  IPs. Multiple nodes should be separated by commas. For example:"},{"line_number":69,"context_line":"  ``lightos_api_address \u003d"},{"line_number":70,"context_line":"  192.168.67.78,192.168.34.56,192.168.12.17``. These IPs are where the"},{"line_number":71,"context_line":"  driver looks for the LightOS clusters REST API servers."},{"line_number":72,"context_line":"- ``LIGHTOS_JWT`` is the JWT (JSON Web Token) that is located at the"},{"line_number":73,"context_line":"  LightOS installation controller. You can find the jwt at"},{"line_number":74,"context_line":"  ``~/lightos-default-admin-jwt``."}],"source_content_type":"text/x-rst","patch_set":21,"id":"e89f8d27_455a97ba","line":71,"range":{"start_line":71,"start_character":31,"end_line":71,"end_character":39},"in_reply_to":"8b0be4d7_cb14d706","updated":"2022-01-30 09:33:07.000000000","message":"Thanks, Jay, you are right. Yuval, let\u0027s fold it into a separate post-merge patchset.","commit_id":"30832d8d37596a060b5b0532953b2c5cc5c5a6be"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"47304cd5f513fde2a573808e5b61f56cf29e0ec1","unresolved":true,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"In the current version, if any of the cluster nodes changes its access"},{"line_number":126,"context_line":"IPs, the Cinder driver\u0027s configuration file should be updated with the"},{"line_number":127,"context_line":"cluster nodes access IPs and restarted. As long as the Cinder driver"},{"line_number":128,"context_line":"can access at least one cluster access IP it will work, but will be"},{"line_number":129,"context_line":"susceptible to cluster node failures."},{"line_number":130,"context_line":""}],"source_content_type":"text/x-rst","patch_set":21,"id":"f3035e08_f9a3e210","line":127,"range":{"start_line":127,"start_character":8,"end_line":127,"end_character":13},"updated":"2022-01-27 22:43:30.000000000","message":"nit: nodes\u0027","commit_id":"30832d8d37596a060b5b0532953b2c5cc5c5a6be"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"2402c33a82dc092dd59fcb991d1cdac767fc8c78","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"In the current version, if any of the cluster nodes changes its access"},{"line_number":126,"context_line":"IPs, the Cinder driver\u0027s configuration file should be updated with the"},{"line_number":127,"context_line":"cluster nodes access IPs and restarted. As long as the Cinder driver"},{"line_number":128,"context_line":"can access at least one cluster access IP it will work, but will be"},{"line_number":129,"context_line":"susceptible to cluster node failures."},{"line_number":130,"context_line":""}],"source_content_type":"text/x-rst","patch_set":21,"id":"1f1796f5_bbdcea0d","line":127,"range":{"start_line":127,"start_character":8,"end_line":127,"end_character":13},"in_reply_to":"f3035e08_f9a3e210","updated":"2022-01-30 09:33:07.000000000","message":"Same. Yuval, FYI.","commit_id":"30832d8d37596a060b5b0532953b2c5cc5c5a6be"}],"doc/source/reference/support-matrix.ini":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"8c508f1e54eeb4bee23a0cd86a7760b16662c29a","unresolved":true,"context_lines":[{"line_number":327,"context_line":"driver.kaminario\u003dcomplete"},{"line_number":328,"context_line":"driver.kioxia_kumoscale\u003dcomplete"},{"line_number":329,"context_line":"driver.lenovo\u003dcomplete"},{"line_number":330,"context_line":"driver.lightbits_lightos\u003dcomplete"},{"line_number":331,"context_line":"driver.linbit_linstor\u003dcomplete"},{"line_number":332,"context_line":"driver.lvm\u003dcomplete"},{"line_number":333,"context_line":"driver.macrosan\u003dcomplete"}],"source_content_type":"text/x-properties","patch_set":21,"id":"0eb17c04_1483278a","line":330,"range":{"start_line":330,"start_character":0,"end_line":330,"end_character":33},"updated":"2022-01-25 23:39:25.000000000","message":"You aren\u0027t running the tests for this: https://github.com/LightBitsLabs/logs/blob/main/24_01_2022_13:17:20/tempest.conf#L1333","commit_id":"30832d8d37596a060b5b0532953b2c5cc5c5a6be"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"dd0c2c9b7629ad2e41883b94af3bf5292dd38409","unresolved":true,"context_lines":[{"line_number":327,"context_line":"driver.kaminario\u003dcomplete"},{"line_number":328,"context_line":"driver.kioxia_kumoscale\u003dcomplete"},{"line_number":329,"context_line":"driver.lenovo\u003dcomplete"},{"line_number":330,"context_line":"driver.lightbits_lightos\u003dcomplete"},{"line_number":331,"context_line":"driver.linbit_linstor\u003dcomplete"},{"line_number":332,"context_line":"driver.lvm\u003dcomplete"},{"line_number":333,"context_line":"driver.macrosan\u003dcomplete"}],"source_content_type":"text/x-properties","patch_set":21,"id":"4a47f1fd_aa152466","line":330,"range":{"start_line":330,"start_character":0,"end_line":330,"end_character":33},"in_reply_to":"0eb17c04_1483278a","updated":"2022-01-26 13:11:47.000000000","message":"Thanks brian for the review - we updated the tempest conf file:\nhttps://github.com/LightBitsLabs/logs/blob/fe95040b6f0d6558f414e5db4314fd0fab26507f/26_01_2022_08:46:58/tempest.conf#L1333","commit_id":"30832d8d37596a060b5b0532953b2c5cc5c5a6be"},{"author":{"_account_id":34459,"name":"Muli Ben-Yehuda","email":"muli@lightbitslabs.com","username":"muliby"},"change_message_id":"ff4148eed3d9a0f57f22be1faf6f6cdc39f255ab","unresolved":false,"context_lines":[{"line_number":327,"context_line":"driver.kaminario\u003dcomplete"},{"line_number":328,"context_line":"driver.kioxia_kumoscale\u003dcomplete"},{"line_number":329,"context_line":"driver.lenovo\u003dcomplete"},{"line_number":330,"context_line":"driver.lightbits_lightos\u003dcomplete"},{"line_number":331,"context_line":"driver.linbit_linstor\u003dcomplete"},{"line_number":332,"context_line":"driver.lvm\u003dcomplete"},{"line_number":333,"context_line":"driver.macrosan\u003dcomplete"}],"source_content_type":"text/x-properties","patch_set":21,"id":"6bad13d9_0f73f9ff","line":330,"range":{"start_line":330,"start_character":0,"end_line":330,"end_character":33},"in_reply_to":"4a47f1fd_aa152466","updated":"2022-01-30 09:34:25.000000000","message":"Done","commit_id":"30832d8d37596a060b5b0532953b2c5cc5c5a6be"}]}
