)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":34149,"name":"Niklas Schwarz","email":"niklas.schwarz@inovex.de","username":"nschwarz"},"change_message_id":"3bc27ab1c835fe1f58df806d3b6d0eb62f702590","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"6586bdab_c0e4b23b","updated":"2021-12-07 16:04:22.000000000","message":"In the cinder meeting Christian informed you about the spec. I have now added the suggestions\nmentioned in the meeting. Could some of you give us feedback on what is missing or needs\nfurther improvement to accomplish the goal to get the spec ready before the deadline.\nThanks in advance","commit_id":"a07200084ba61e33cc416c518f51640535e83a10"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"0a4b9f16733e6c21d9438793593c7ca6569630cd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"d3dfca86_7d35d4b8","updated":"2021-12-14 00:03:24.000000000","message":"This is consistent with what has been discussed previously.  It would be nice if you could be more specific about which status values will be retained for the volume, and which ones will become task statuses (the current text says for example, but isn\u0027t completely specific).  The list of current volume statuses is here:\n\nhttps://opendev.org/openstack/cinder/src/commit/5c23c9fbe41baef22a71eac4406fd9db269d1271/cinder/objects/fields.py#L168-L190\n\nAdditionally, it would be good to work through an example of what an end user will see in the volume detail response when a backup is occurring at the same time a volume is being migrated.\n\n\n","commit_id":"a07200084ba61e33cc416c518f51640535e83a10"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"c4a0f77693b5d4d4bb5ab3baa30a493a64f2c7ec","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"73ca60a8_a7ad2eb9","in_reply_to":"6586bdab_c0e4b23b","updated":"2022-03-31 14:25:21.000000000","message":"Done","commit_id":"a07200084ba61e33cc416c518f51640535e83a10"},{"author":{"_account_id":34149,"name":"Niklas Schwarz","email":"niklas.schwarz@inovex.de","username":"nschwarz"},"change_message_id":"b9b291214bc7367ca870b905cc8659a9042c98e1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"218f73fc_5fa171e8","updated":"2022-01-05 10:56:56.000000000","message":"I have now added some examples how the different states could interact.\nAdditional and especially for the states I have added a state-machines for the status, task_statues and migration_status. The sequence diagrams for the examples are not the greatest but the tool used (graphviz) for the specs and documentation does not support sequence diagrams. I hope they can be understood. If not please let me know and I try a different tool and put in an image, if needed.\n\nOne further question: To be able to render the graphs with graphviz it is required to add the extension `sphinx.ext.graphviz` to the `doc/source/conf.py`. Should I add the extension with the next patchset? (Currently there are multiple typos that the graphs are not rendered. These will be fixed.)","commit_id":"4530d7c21aba9f95342360a3246ecf84e8e66f77"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"feff4abca77ee1df89509a232d310e94767e5636","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"bfda8f13_3aec15f5","updated":"2022-01-06 19:55:56.000000000","message":"Seems to be some rendering issues, particularly with the graphviz sections and the two specifically mentioned below","commit_id":"4530d7c21aba9f95342360a3246ecf84e8e66f77"},{"author":{"_account_id":34149,"name":"Niklas Schwarz","email":"niklas.schwarz@inovex.de","username":"nschwarz"},"change_message_id":"adf25c6f5b39c43bed379877a01a59f8a2008328","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"75c58d26_3c49b95e","in_reply_to":"bfda8f13_3aec15f5","updated":"2022-01-07 09:09:34.000000000","message":"The sphinx extension was not loaded. Also tox did not pick up the graphviz keyword. It is fixed and should be rendered correctly.","commit_id":"4530d7c21aba9f95342360a3246ecf84e8e66f77"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"bfb2474cd930c1b793f511de452e4f33188d9aa4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"c4af9cd5_8237729c","updated":"2022-01-17 11:07:59.000000000","message":"Looks like a really good idea!","commit_id":"a8075f942aa80ee80c80a5b910f3bc5b859a07fa"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"11de02107d4921797e7ae7450570978e38b98892","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"ca4f5f3f_421511ad","updated":"2022-01-07 14:37:04.000000000","message":"Some more suggestions on the rendering of the graphviz content","commit_id":"a8075f942aa80ee80c80a5b910f3bc5b859a07fa"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"9e8846233e31f662ffc304826ca8ac5b27d43e32","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"74e10fb6_d633843a","updated":"2022-02-23 14:17:58.000000000","message":"I am comfortable with this spec from a rendering and language perspective. Looks OK from the code logic side as well. \nNeed another core to validate the code requirements","commit_id":"ca77820a7ef05b1189f8a807ec12d7f5e5bd51f9"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"92b8edda6a62687b95e5e61c4e919b36510af288","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"58fae582_afd6d312","updated":"2022-01-25 15:04:39.000000000","message":"Please add this PS as a dependency https://review.opendev.org/c/openstack/cinder-specs/+/826302/\nuntil we can resolve the build issue.\nThis will give you built docs to check formatting.","commit_id":"ca77820a7ef05b1189f8a807ec12d7f5e5bd51f9"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"fdcfa0a60d697b6e0764ccc187c24d39cc6d47f0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"5e52fbbe_a35b4813","updated":"2022-01-25 16:53:03.000000000","message":"Sphinx issue fixed. Ignore depends on request","commit_id":"ca77820a7ef05b1189f8a807ec12d7f5e5bd51f9"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"3d00630f002fafa879a8ea1e6cab32b1e66b4f9b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"bcafde87_2d2965ea","updated":"2022-01-28 14:28:40.000000000","message":"The depends-on is no longer required. \nThe tox issue has been fixed.","commit_id":"ca77820a7ef05b1189f8a807ec12d7f5e5bd51f9"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"e13f0452cbb615814c2378e39de8d654b0d8c31e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"c199ddd9_ccda948d","updated":"2022-01-25 16:53:13.000000000","message":"recheck","commit_id":"ca77820a7ef05b1189f8a807ec12d7f5e5bd51f9"},{"author":{"_account_id":34149,"name":"Niklas Schwarz","email":"niklas.schwarz@inovex.de","username":"nschwarz"},"change_message_id":"9b7229aec17462e69c72090b4fecd67ca238f67e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"fad3fc66_1323fd12","updated":"2022-01-24 16:31:39.000000000","message":"recheck","commit_id":"ca77820a7ef05b1189f8a807ec12d7f5e5bd51f9"},{"author":{"_account_id":34149,"name":"Niklas Schwarz","email":"niklas.schwarz@inovex.de","username":"nschwarz"},"change_message_id":"f72a4101d4db41a58d3eedbb89b93a34467ba802","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"7d423826_39707b44","in_reply_to":"58fae582_afd6d312","updated":"2022-01-28 14:24:57.000000000","message":"Thanks for the hint. Will include it in the next patch update.","commit_id":"ca77820a7ef05b1189f8a807ec12d7f5e5bd51f9"},{"author":{"_account_id":34149,"name":"Niklas Schwarz","email":"niklas.schwarz@inovex.de","username":"nschwarz"},"change_message_id":"2d9d099db7373709ff21ed56666723f14d66004e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"b97ef3ba_e60edcfc","in_reply_to":"74e10fb6_d633843a","updated":"2022-02-28 09:02:59.000000000","message":"Perfect for me.\n\nAs part of the new release cycle I will move the spec from yoga to zed","commit_id":"ca77820a7ef05b1189f8a807ec12d7f5e5bd51f9"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"8e5fed653b7df708296cce30dc776692c3fcfc19","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"6d4371ee_53b61db9","updated":"2022-04-01 12:12:06.000000000","message":"Allowing multiple actions against a volume at the same time is a nightmare scenario for cinder admins.  I can only see this leading to many many problems in a production environment.","commit_id":"655427eea06907ffe414461328e2f801de5da0b5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"7a6e1eb20393dd38b090c6f0f7891637ebdff655","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"4e756146_571f9d95","updated":"2022-11-30 14:19:36.000000000","message":"Based on mid-cycle discussion this needs more work","commit_id":"655427eea06907ffe414461328e2f801de5da0b5"},{"author":{"_account_id":32755,"name":"Christian Rohmann","email":"christian.rohmann@inovex.de","username":"frittentheke"},"change_message_id":"a4f568ff6803c8320874495a466dd0551c105e49","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"bc894e2c_c0d10d6a","updated":"2022-05-24 10:10:34.000000000","message":"Brian, Gorka, Simon,\n\nthis spec has been discussed and refined quite a bit.\nWith the spec freeze approaching fast (https://releases.openstack.org/zed/schedule.html#z-cinder-spec-freeze), is there any way forward with this for Zed? Or are you missing more details and ideas about the migration from the current to the intended state of handling tasks?\n\nOnly after the spec is accepted any implementation and coding work can really start. \nWhat are your ideas in that regard? This is quite a complex change to the state machines.\nI doubt this can be implemented in time and with consideration of all side-effects by a non-core dev without extensive co-working.","commit_id":"655427eea06907ffe414461328e2f801de5da0b5"},{"author":{"_account_id":34149,"name":"Niklas Schwarz","email":"niklas.schwarz@inovex.de","username":"nschwarz"},"change_message_id":"5c17282550e7c24a4c4c18531f4b9dd9b8c9d2ae","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"8da43b97_b31d71a4","updated":"2022-04-14 08:37:22.000000000","message":"Hi there reviewers,\n\nI am glad that attention is brought back to this topic and I will gladly discuss this topic further with you.\n\nBut is there any chance that the spec would be approved in the zed release so the implementation could start? Or are there any blockers?\n\nBest regards","commit_id":"655427eea06907ffe414461328e2f801de5da0b5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"5389893b82827a6169d9d58ff407307ad7095c7b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"513d7512_8a05c5f9","updated":"2022-03-03 17:36:28.000000000","message":"I am good with this for Zed","commit_id":"655427eea06907ffe414461328e2f801de5da0b5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"c4a0f77693b5d4d4bb5ab3baa30a493a64f2c7ec","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"f8416484_37530874","updated":"2022-03-31 14:25:21.000000000","message":"I believe this is now complete","commit_id":"655427eea06907ffe414461328e2f801de5da0b5"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"603c73e786ff705bc5affb2b3b9606d2775ed9eb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"b3acead9_fcba2cad","updated":"2022-06-20 16:58:18.000000000","message":"I really don\u0027t see any good usage of the task_status field except the only use case mentioned throughout the spec i.e. migrating volume + creating backup.\nIf we really want to introduce this field, it will have an impact on nova, glance, tempest etc which again will require development effort and code understanding of those projects to modify all the required places.\nIf we are really planning to implement a change like this, I would like to see a table of all the operations that could be performed in parallel (without any race conditions) and which operations cannot.\nIf our goal is to address the only use case, we can use the migration_status field as an indication of volume migrating and change the status field to backing-up to serve the purpose without the task field.\nIn conclusion, I don\u0027t see this spec addressing the bunch of cases where this could just not work or cause race conditions.\nAlso no assignee is a big concern for me for such a big effort.","commit_id":"655427eea06907ffe414461328e2f801de5da0b5"},{"author":{"_account_id":32755,"name":"Christian Rohmann","email":"christian.rohmann@inovex.de","username":"frittentheke"},"change_message_id":"08f18781302f387e4f6bc27964141d9fe9d7aaf9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"e3c291fe_d996c38d","updated":"2022-04-01 06:10:16.000000000","message":"Simon, Brian - Can this spec be merged / accepted then?\n\nWhat are the next steps on moving to an implementation?\n\nCertainly this is quite a big change and I believe a discussion and exchange on ideas on what and where things need to be placed and implemented makes sense, right? Would any of you core folks join in with the implementation and would you expect things to only reach you when there is code to review?","commit_id":"655427eea06907ffe414461328e2f801de5da0b5"},{"author":{"_account_id":32755,"name":"Christian Rohmann","email":"christian.rohmann@inovex.de","username":"frittentheke"},"change_message_id":"e266ffbad47d00077b8109b734683c8dfb18ac5d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"e84fc372_233b37bc","updated":"2022-06-28 13:58:20.000000000","message":"Thanks Rajat for your thorough review and for picking up on originally discussed issue of backups blocking live migrations. The intention actually was to \"just\" fix this particular issue, but then the idea to fix the serialization issue in a broader sense came up and we received positive feedback among the devs.\n\nTo my understanding a spec is somewhere in between an issue, a user-story or a requirement and then the particulars of implementing it.\n\nBut sticking with the issue of backups actually happening independently from other actions on a volume - would getting cinder to allow just this to work independently be a more viable change? Maybe the initial issue deserves another discussion among the cores to find a less change-heavy alternative?\n\nJust to bring up the numbers we played with when initially discussing the issue of backups blocking a live migration (re-attachment of the volume).... image an 8TB volume being backed up in full. Even with 1GB/s this volume will take 2,5hrs to be backed up - now imaging the user triggering yet another backup or multiple volumes being backed up... \n\nSo decoupling this from a state machine perspective (since it already is for most drivers / implementations which work via snapshots) seems to still make a lot of sense.","commit_id":"655427eea06907ffe414461328e2f801de5da0b5"},{"author":{"_account_id":32755,"name":"Christian Rohmann","email":"christian.rohmann@inovex.de","username":"frittentheke"},"change_message_id":"3a83f88ba775e65656c0a4ebc73086b42bc1c19d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"6ade3ca0_d95e489d","updated":"2022-10-20 09:52:28.000000000","message":"Thanks a bunch for picking up on the discussion about this spec during the PTG (https://etherpad.opendev.org/p/antelope-ptg-cinder#L294) ... I\u0027d like to answer your question from the PTG here:\n\nThe idea behind this spec was to NOT fix just the issue of backups being blocked, but to allow for other tasks to run in parallel as well.\n\nBut fixing \"just\" the backups blocking other action would be more than helpful and certainly \"enough\". As explained in this spec migrations only work if the volume is somewhat \"idle\" (`in-use`, `available`,...) in regards to other operations on it.\n\nAnd making migrations tolerant about the volume status would start with the extension of the \"expected\" status for reservations  .. https://opendev.org/openstack/cinder/src/commit/ad184ca698d4b9cce912fcc1e936ef02c44b47d9/cinder/volume/api.py#L2372 to allow volumes in a status of backing up to be moved with their instance. But then we have two processes on the same volume trying to go through their state machine (the backup with \"backing-up\") and the attachment_reservation with \"reserved\") ... this is exactly the reason for this bigger proposal to avoid such interwoven state-machines.\n\nBut if \"just\" allowing backups and their state to be independently and if this is the agreed way to approach the issue of live migrations being blocked I am fine with that. This will then likely be about making just the backups and their status NOT using the status field anymore and getting their independent state (machine).\n\nShould we propose a new spec with \"just\" the backup issue or rephrase this one then?","commit_id":"655427eea06907ffe414461328e2f801de5da0b5"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"90ebf5a610040dc5280bdd7921fb4df900ffb00c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"e3fbf7b7_28662b31","updated":"2022-04-04 15:50:40.000000000","message":"recheck","commit_id":"655427eea06907ffe414461328e2f801de5da0b5"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b887a6b84c0efcacde8fa2b595a2aea26d68c70b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"f77d6143_892f44a8","updated":"2022-06-20 06:34:43.000000000","message":"recheck\n\nfor fresh logs","commit_id":"655427eea06907ffe414461328e2f801de5da0b5"}],"specs/yoga/move-task-status-to-dedicated-field.rst":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"0a4b9f16733e6c21d9438793593c7ca6569630cd","unresolved":true,"context_lines":[{"line_number":31,"context_line":"the same time even if different drivers are used or the actions could run"},{"line_number":32,"context_line":"concurrently on the same volume."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Since the actual volume status is \u0027lost\u0027 while a tasks is running, this status"},{"line_number":35,"context_line":"is temporarily saved in a field previous_status"},{"line_number":36,"context_line":"(https://opendev.org/openstack/cinder/src/commit/3e048975d0f75b983c69974945f8e5a9792c488a/cinder/db/sqlalchemy/models.py#L311)"},{"line_number":37,"context_line":"which is then restored to volume_status on task completion. This logic adds"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5ec27c63_8063740f","line":34,"range":{"start_line":34,"start_character":49,"end_line":34,"end_character":54},"updated":"2021-12-14 00:03:24.000000000","message":"nit: should be \u0027task\u0027","commit_id":"a07200084ba61e33cc416c518f51640535e83a10"},{"author":{"_account_id":34149,"name":"Niklas Schwarz","email":"niklas.schwarz@inovex.de","username":"nschwarz"},"change_message_id":"b9b291214bc7367ca870b905cc8659a9042c98e1","unresolved":false,"context_lines":[{"line_number":31,"context_line":"the same time even if different drivers are used or the actions could run"},{"line_number":32,"context_line":"concurrently on the same volume."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Since the actual volume status is \u0027lost\u0027 while a tasks is running, this status"},{"line_number":35,"context_line":"is temporarily saved in a field previous_status"},{"line_number":36,"context_line":"(https://opendev.org/openstack/cinder/src/commit/3e048975d0f75b983c69974945f8e5a9792c488a/cinder/db/sqlalchemy/models.py#L311)"},{"line_number":37,"context_line":"which is then restored to volume_status on task completion. This logic adds"}],"source_content_type":"text/x-rst","patch_set":2,"id":"99054b07_8dab39a8","line":34,"range":{"start_line":34,"start_character":49,"end_line":34,"end_character":54},"in_reply_to":"5ec27c63_8063740f","updated":"2022-01-05 10:56:56.000000000","message":"Done","commit_id":"a07200084ba61e33cc416c518f51640535e83a10"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"feff4abca77ee1df89509a232d310e94767e5636","unresolved":true,"context_lines":[{"line_number":330,"context_line":"Due to the fact that the migration status is stored separately the migration"},{"line_number":331,"context_line":"and the backup can happen concurrently."},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"  status\t\t\t  available"},{"line_number":334,"context_line":"  migration\t\t  migrating"},{"line_number":335,"context_line":"  task_status\t\tbacking-up"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"The different states can change due to their working state and each operation"},{"line_number":338,"context_line":"can end independently."}],"source_content_type":"text/x-rst","patch_set":4,"id":"79aca260_00720f98","line":335,"range":{"start_line":333,"start_character":0,"end_line":335,"end_character":25},"updated":"2022-01-06 19:55:56.000000000","message":"This does not appear to render correctly","commit_id":"4530d7c21aba9f95342360a3246ecf84e8e66f77"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"9e8846233e31f662ffc304826ca8ac5b27d43e32","unresolved":false,"context_lines":[{"line_number":330,"context_line":"Due to the fact that the migration status is stored separately the migration"},{"line_number":331,"context_line":"and the backup can happen concurrently."},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"  status\t\t\t  available"},{"line_number":334,"context_line":"  migration\t\t  migrating"},{"line_number":335,"context_line":"  task_status\t\tbacking-up"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"The different states can change due to their working state and each operation"},{"line_number":338,"context_line":"can end independently."}],"source_content_type":"text/x-rst","patch_set":4,"id":"d36796aa_9d40989c","line":335,"range":{"start_line":333,"start_character":0,"end_line":335,"end_character":25},"in_reply_to":"28d40d43_416af97f","updated":"2022-02-23 14:17:58.000000000","message":"Done","commit_id":"4530d7c21aba9f95342360a3246ecf84e8e66f77"},{"author":{"_account_id":34149,"name":"Niklas Schwarz","email":"niklas.schwarz@inovex.de","username":"nschwarz"},"change_message_id":"adf25c6f5b39c43bed379877a01a59f8a2008328","unresolved":true,"context_lines":[{"line_number":330,"context_line":"Due to the fact that the migration status is stored separately the migration"},{"line_number":331,"context_line":"and the backup can happen concurrently."},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"  status\t\t\t  available"},{"line_number":334,"context_line":"  migration\t\t  migrating"},{"line_number":335,"context_line":"  task_status\t\tbacking-up"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"The different states can change due to their working state and each operation"},{"line_number":338,"context_line":"can end independently."}],"source_content_type":"text/x-rst","patch_set":4,"id":"28d40d43_416af97f","line":335,"range":{"start_line":333,"start_character":0,"end_line":335,"end_character":25},"in_reply_to":"79aca260_00720f98","updated":"2022-01-07 09:09:34.000000000","message":"Should now be rendered as a table.","commit_id":"4530d7c21aba9f95342360a3246ecf84e8e66f77"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"feff4abca77ee1df89509a232d310e94767e5636","unresolved":true,"context_lines":[{"line_number":397,"context_line":"As said in Example 1 the migration status is stored in a different field and"},{"line_number":398,"context_line":"can so happen while the backup is ongoing."},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"  status\t\t\t  in-use"},{"line_number":401,"context_line":"  migration\t\t  migrating"},{"line_number":402,"context_line":"  task_status\t\tbacking-up"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"The different states can change due to their working state and each operation"},{"line_number":405,"context_line":"can end independently."}],"source_content_type":"text/x-rst","patch_set":4,"id":"0cf5c1d6_58443af4","line":402,"range":{"start_line":400,"start_character":0,"end_line":402,"end_character":25},"updated":"2022-01-06 19:55:56.000000000","message":"Again - not appearing to render correctly","commit_id":"4530d7c21aba9f95342360a3246ecf84e8e66f77"},{"author":{"_account_id":34149,"name":"Niklas Schwarz","email":"niklas.schwarz@inovex.de","username":"nschwarz"},"change_message_id":"adf25c6f5b39c43bed379877a01a59f8a2008328","unresolved":true,"context_lines":[{"line_number":397,"context_line":"As said in Example 1 the migration status is stored in a different field and"},{"line_number":398,"context_line":"can so happen while the backup is ongoing."},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"  status\t\t\t  in-use"},{"line_number":401,"context_line":"  migration\t\t  migrating"},{"line_number":402,"context_line":"  task_status\t\tbacking-up"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"The different states can change due to their working state and each operation"},{"line_number":405,"context_line":"can end independently."}],"source_content_type":"text/x-rst","patch_set":4,"id":"7e958e92_707b93af","line":402,"range":{"start_line":400,"start_character":0,"end_line":402,"end_character":25},"in_reply_to":"0cf5c1d6_58443af4","updated":"2022-01-07 09:09:34.000000000","message":"Same as above. Thanks for the hints","commit_id":"4530d7c21aba9f95342360a3246ecf84e8e66f77"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"9e8846233e31f662ffc304826ca8ac5b27d43e32","unresolved":false,"context_lines":[{"line_number":397,"context_line":"As said in Example 1 the migration status is stored in a different field and"},{"line_number":398,"context_line":"can so happen while the backup is ongoing."},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"  status\t\t\t  in-use"},{"line_number":401,"context_line":"  migration\t\t  migrating"},{"line_number":402,"context_line":"  task_status\t\tbacking-up"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"The different states can change due to their working state and each operation"},{"line_number":405,"context_line":"can end independently."}],"source_content_type":"text/x-rst","patch_set":4,"id":"fe5df161_1131ace7","line":402,"range":{"start_line":400,"start_character":0,"end_line":402,"end_character":25},"in_reply_to":"7e958e92_707b93af","updated":"2022-02-23 14:17:58.000000000","message":"Done","commit_id":"4530d7c21aba9f95342360a3246ecf84e8e66f77"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"11de02107d4921797e7ae7450570978e38b98892","unresolved":true,"context_lines":[{"line_number":132,"context_line":""},{"line_number":133,"context_line":"To be able to start a task on the volume the status has to be `available` or"},{"line_number":134,"context_line":"`in-use`. If the volume is in another state the task will not start."},{"line_number":135,"context_line":""},{"line_number":136,"context_line":".. graphviz::"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"  digraph G {"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ddd2f328_9a1ab7d0","line":135,"updated":"2022-01-07 14:37:04.000000000","message":"Putting these 3 in the same graph is making things small and confusing.\nMaybe break them into 3 separate graphs, each with its own subtitle or description footer.\n\nSomething like...\n\nvolume_status workflow\n\n.. graphviz::\n\n  digraph G {\n\n        node [fontsize\u003d7fontname\u003d\"Monospace\" shape \u003d rectangle];\n        volume_status;\n\n        node [fontsize\u003d10 fontname\u003d\"Monospace\" shape\u003dellipse];\n        edge [arrowhead\u003d\"normal\", arrowsize\u003d\"0.8\"];\n        forcelabels\u003dtrue;\n\n        /* volume states */\n        attaching [label\u003d\"ATTACHING\"]\n        available [label\u003d\"AVAILABLE\"]\n        detaching [label\u003d\"DETACHING\"]\n        creating [label\u003d\"CREATING\"]\n        deleting [label\u003d\"DELETING\" shape\u003ddoublecircle]\n        error [label\u003d\"ERROR\", color\u003d\"red\"]\n        errordeleting [label\u003d\"ERROR-DELETING\", color\u003d\"red\"]\n        inuse [label\u003d\"IN-USE\"]\n        reserved [label\u003d\"RESERVED\"]\n\n        /* transitions status */\n        volume_status -\u003e creating\n        creating -\u003e available\n        available -\u003e attaching\n        attaching -\u003e reserved\n        attaching -\u003e error\n        reserved -\u003e inuse\n        reserved -\u003e error\n        available -\u003e deleting\n        inuse -\u003e detaching\n        detaching -\u003e available\n        detaching -\u003e error\n        inuse -\u003e error\n        creating -\u003e error\n        deleting -\u003e errordeleting\n        errordeleting -\u003e deleting\n\n  }\n\ntask_status workflow\n\n.. graphviz::\n\n   digraph G {\n       node [fontsize\u003d7 fontname\u003d\"Monospace\" shape \u003d rectangle];\n        task_status;\n\n        node [fontsize\u003d10 fontname\u003d\"Monospace\" shape\u003dellipse];\n        edge [arrowhead\u003d\"normal\", arrowsize\u003d\"0.8\"];\n        forcelabels\u003dtrue;\n\n        /* task states */\n        awaitingtransfer [label\u003d\"AWAITING_TRANSFER\"]\n        backingup [label\u003d\"BACKING-UP\"]\n        downloading [label\u003d\"DOWNLOADING\"]\n        errorbackingup [label\u003d\"ERROR-BACKING-UP\", color\u003d\"red\"]\n        errorextending [label\u003d\"ERROR-EXTENDING\", color\u003d\"red\"]\n        errormanaging [label\u003d\"ERROR-MANAGING\", color\u003d\"red\"]\n        errrorrestoring [label\u003d\"ERROR-RESTORING\", color\u003d\"red\"]\n        extending [label\u003d\"EXTENDING\"]\n        managing [label\u003d\"MANAGING\"]\n        none [label\u003d\"NONE\" shape\u003ddoublecircle]\n        restorebackup [label\u003d\"RESTORE-BACKUP\"]\n        retyping [label\u003d\"RETYPING\"]\n        uploading [label\u003d\"UPLOADING\"]\n\n        /* transitions task_status */\n        task_status -\u003e none\n        none -\u003e awaitingtransfer\n        awaitingtransfer -\u003e none\n        none -\u003e backingup\n        backingup -\u003e none\n        backingup -\u003e errorbackingup\n        none -\u003e managing\n        managing -\u003e errormanaging\n        managing -\u003e none\n        none -\u003e downloading\n        downloading -\u003e none\n        none -\u003e restorebackup\n        restorebackup -\u003e errrorrestoring\n        restorebackup -\u003e none\n        none -\u003e uploading\n        uploading -\u003e none\n        none -\u003e extending\n        extending -\u003e errorextending\n        extending -\u003e none\n        none -\u003e retyping\n        retyping -\u003e none}\n\n  }\n\nmigration_status workflow\n\n.. graphviz::\n\n   digraph G {\n        node [fontsize\u003d7 fontname\u003d\"Monospace\" shape \u003d rectangle];\n        migration_status;\n\n        node [fontsize\u003d10 fontname\u003d\"Monospace\" shape\u003dellipse];\n        edge [arrowhead\u003d\"normal\", arrowsize\u003d\"0.8\"];\n        forcelabels\u003dtrue;\n\n        /* migration states */\n        completing [label\u003d\"COMPLETING\"]\n        error_migration [label\u003d\"ERROR\", color\u003d\"red\" shape\u003ddoublecircle]\n        migrating [label\u003d\"MIGRATING\"]\n        none_migration [label\u003d\"NONE\" shape\u003ddoublecircle]\n        starting [label\u003d\"STARTING\"]\n        success [label\u003d\"SUCCESS\"]\n\n        /*transitions migration status*/\n        migration_status -\u003e none_migration\n        none_migration -\u003e starting\n        starting -\u003e error_migration\n        starting -\u003e migrating\n        migrating -\u003e error_migration\n        migrating -\u003e completing\n        completing -\u003e error_migration\n        completing -\u003e success\n        success -\u003e none_migration\n\n  }","commit_id":"a8075f942aa80ee80c80a5b910f3bc5b859a07fa"},{"author":{"_account_id":34149,"name":"Niklas Schwarz","email":"niklas.schwarz@inovex.de","username":"nschwarz"},"change_message_id":"8054477f648254f985491e37687d008d321aad80","unresolved":false,"context_lines":[{"line_number":132,"context_line":""},{"line_number":133,"context_line":"To be able to start a task on the volume the status has to be `available` or"},{"line_number":134,"context_line":"`in-use`. If the volume is in another state the task will not start."},{"line_number":135,"context_line":""},{"line_number":136,"context_line":".. graphviz::"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"  digraph G {"}],"source_content_type":"text/x-rst","patch_set":5,"id":"b3ce76f2_e2a17350","line":135,"in_reply_to":"1f8bad0b_decc2def","updated":"2022-01-21 12:33:23.000000000","message":"Done","commit_id":"a8075f942aa80ee80c80a5b910f3bc5b859a07fa"},{"author":{"_account_id":34149,"name":"Niklas Schwarz","email":"niklas.schwarz@inovex.de","username":"nschwarz"},"change_message_id":"ca6b2345890d6765e1ac14222f18e9032d132521","unresolved":true,"context_lines":[{"line_number":132,"context_line":""},{"line_number":133,"context_line":"To be able to start a task on the volume the status has to be `available` or"},{"line_number":134,"context_line":"`in-use`. If the volume is in another state the task will not start."},{"line_number":135,"context_line":""},{"line_number":136,"context_line":".. graphviz::"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"  digraph G {"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1f8bad0b_decc2def","line":135,"in_reply_to":"ddd2f328_9a1ab7d0","updated":"2022-01-10 10:34:56.000000000","message":"Good point. I will split them up and add a header to each of them.","commit_id":"a8075f942aa80ee80c80a5b910f3bc5b859a07fa"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"11de02107d4921797e7ae7450570978e38b98892","unresolved":true,"context_lines":[{"line_number":346,"context_line":""},{"line_number":347,"context_line":"  digraph G{"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"    node[shape\u003dpoint];"},{"line_number":350,"context_line":"    start;"},{"line_number":351,"context_line":"    node[shape\u003ddoublecircle fontsize\u003d10 fontname\u003d\"Monospace\"];"},{"line_number":352,"context_line":"    end;"},{"line_number":353,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"72b5016e_39c98da2","line":350,"range":{"start_line":349,"start_character":0,"end_line":350,"end_character":10},"updated":"2022-01-07 14:37:04.000000000","message":"The rendering is a little weird with the start point. Maybe remove these lines and lines 384-386 to remove the start point and the 3 initial lines.","commit_id":"a8075f942aa80ee80c80a5b910f3bc5b859a07fa"},{"author":{"_account_id":34149,"name":"Niklas Schwarz","email":"niklas.schwarz@inovex.de","username":"nschwarz"},"change_message_id":"8054477f648254f985491e37687d008d321aad80","unresolved":true,"context_lines":[{"line_number":346,"context_line":""},{"line_number":347,"context_line":"  digraph G{"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"    node[shape\u003dpoint];"},{"line_number":350,"context_line":"    start;"},{"line_number":351,"context_line":"    node[shape\u003ddoublecircle fontsize\u003d10 fontname\u003d\"Monospace\"];"},{"line_number":352,"context_line":"    end;"},{"line_number":353,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ce6f2cb9_10f0d9d5","line":350,"range":{"start_line":349,"start_character":0,"end_line":350,"end_character":10},"in_reply_to":"17fe9669_98e63481","updated":"2022-01-21 12:33:23.000000000","message":"Replaced the diagrams with diagrams written in plantuml","commit_id":"a8075f942aa80ee80c80a5b910f3bc5b859a07fa"},{"author":{"_account_id":34149,"name":"Niklas Schwarz","email":"niklas.schwarz@inovex.de","username":"nschwarz"},"change_message_id":"ca6b2345890d6765e1ac14222f18e9032d132521","unresolved":true,"context_lines":[{"line_number":346,"context_line":""},{"line_number":347,"context_line":"  digraph G{"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"    node[shape\u003dpoint];"},{"line_number":350,"context_line":"    start;"},{"line_number":351,"context_line":"    node[shape\u003ddoublecircle fontsize\u003d10 fontname\u003d\"Monospace\"];"},{"line_number":352,"context_line":"    end;"},{"line_number":353,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"aff42170_6b4f4ad2","line":350,"range":{"start_line":349,"start_character":0,"end_line":350,"end_character":10},"in_reply_to":"72b5016e_39c98da2","updated":"2022-01-10 10:34:56.000000000","message":"My point was to create a sequence diagram and have a starting point. But the creation of a sequence diagram with graphviz is a not that appealing. \nIn my opinion it would be better if I create the sequence diagrams with something like plantuml and adding the rendered images to the spec (of course I will add the source code for the diagrams). Would this be a better solution than changing the graphs.\n(Same answer for the suggestions below)","commit_id":"a8075f942aa80ee80c80a5b910f3bc5b859a07fa"},{"author":{"_account_id":34149,"name":"Niklas Schwarz","email":"niklas.schwarz@inovex.de","username":"nschwarz"},"change_message_id":"a5cbd9ae57348acd8135aaf236140d31d153216e","unresolved":true,"context_lines":[{"line_number":346,"context_line":""},{"line_number":347,"context_line":"  digraph G{"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"    node[shape\u003dpoint];"},{"line_number":350,"context_line":"    start;"},{"line_number":351,"context_line":"    node[shape\u003ddoublecircle fontsize\u003d10 fontname\u003d\"Monospace\"];"},{"line_number":352,"context_line":"    end;"},{"line_number":353,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"17fe9669_98e63481","line":350,"range":{"start_line":349,"start_character":0,"end_line":350,"end_character":10},"in_reply_to":"aff42170_6b4f4ad2","updated":"2022-01-13 14:33:46.000000000","message":"I am currently working on the plantuml diagrams. There is an extension for sphinx but the extension needs the jar-file for the generation of the documentation as well as a java installation.\nWhat is the best way do add the extension? Add the jar file to source control in the docs folder? Or just add the source files for the plantuml diagrams and add the rendered images in the spec and do not use the sphinx extension?\nAny opinions?","commit_id":"a8075f942aa80ee80c80a5b910f3bc5b859a07fa"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"9e8846233e31f662ffc304826ca8ac5b27d43e32","unresolved":false,"context_lines":[{"line_number":346,"context_line":""},{"line_number":347,"context_line":"  digraph G{"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"    node[shape\u003dpoint];"},{"line_number":350,"context_line":"    start;"},{"line_number":351,"context_line":"    node[shape\u003ddoublecircle fontsize\u003d10 fontname\u003d\"Monospace\"];"},{"line_number":352,"context_line":"    end;"},{"line_number":353,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"db76073e_667af061","line":350,"range":{"start_line":349,"start_character":0,"end_line":350,"end_character":10},"in_reply_to":"ce6f2cb9_10f0d9d5","updated":"2022-02-23 14:17:58.000000000","message":"Done","commit_id":"a8075f942aa80ee80c80a5b910f3bc5b859a07fa"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"11de02107d4921797e7ae7450570978e38b98892","unresolved":true,"context_lines":[{"line_number":380,"context_line":""},{"line_number":381,"context_line":"      none -\u003e starting -\u003e migrating -\u003e completing -\u003e success"},{"line_number":382,"context_line":"    }"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"    start -\u003e available"},{"line_number":385,"context_line":"    start -\u003e backingup"},{"line_number":386,"context_line":"    start -\u003e none"},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"    available -\u003e end"},{"line_number":389,"context_line":"    backingup -\u003e end"},{"line_number":390,"context_line":"    success-\u003e end"}],"source_content_type":"text/x-rst","patch_set":5,"id":"6f5cfb75_628f7fbf","line":387,"range":{"start_line":383,"start_character":0,"end_line":387,"end_character":0},"updated":"2022-01-07 14:37:04.000000000","message":"Remove as suggested above","commit_id":"a8075f942aa80ee80c80a5b910f3bc5b859a07fa"},{"author":{"_account_id":34149,"name":"Niklas Schwarz","email":"niklas.schwarz@inovex.de","username":"nschwarz"},"change_message_id":"8054477f648254f985491e37687d008d321aad80","unresolved":false,"context_lines":[{"line_number":380,"context_line":""},{"line_number":381,"context_line":"      none -\u003e starting -\u003e migrating -\u003e completing -\u003e success"},{"line_number":382,"context_line":"    }"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"    start -\u003e available"},{"line_number":385,"context_line":"    start -\u003e backingup"},{"line_number":386,"context_line":"    start -\u003e none"},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"    available -\u003e end"},{"line_number":389,"context_line":"    backingup -\u003e end"},{"line_number":390,"context_line":"    success-\u003e end"}],"source_content_type":"text/x-rst","patch_set":5,"id":"f457b5f5_0717bbf4","line":387,"range":{"start_line":383,"start_character":0,"end_line":387,"end_character":0},"in_reply_to":"6f5cfb75_628f7fbf","updated":"2022-01-21 12:33:23.000000000","message":"Ack","commit_id":"a8075f942aa80ee80c80a5b910f3bc5b859a07fa"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"11de02107d4921797e7ae7450570978e38b98892","unresolved":true,"context_lines":[{"line_number":416,"context_line":".. graphviz::"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"  digraph G{"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"    node[shape\u003dpoint];"},{"line_number":421,"context_line":"    start;"},{"line_number":422,"context_line":"    node[shape\u003ddoublecircle fontsize\u003d10 fontname\u003d\"Monospace\"];"},{"line_number":423,"context_line":"    end;"},{"line_number":424,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9937317a_f8bb791d","line":421,"range":{"start_line":419,"start_character":0,"end_line":421,"end_character":10},"updated":"2022-01-07 14:37:04.000000000","message":"As with other example remove these lines and lines 462-465","commit_id":"a8075f942aa80ee80c80a5b910f3bc5b859a07fa"},{"author":{"_account_id":34149,"name":"Niklas Schwarz","email":"niklas.schwarz@inovex.de","username":"nschwarz"},"change_message_id":"8054477f648254f985491e37687d008d321aad80","unresolved":false,"context_lines":[{"line_number":416,"context_line":".. graphviz::"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"  digraph G{"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"    node[shape\u003dpoint];"},{"line_number":421,"context_line":"    start;"},{"line_number":422,"context_line":"    node[shape\u003ddoublecircle fontsize\u003d10 fontname\u003d\"Monospace\"];"},{"line_number":423,"context_line":"    end;"},{"line_number":424,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"7a6a12df_46f92083","line":421,"range":{"start_line":419,"start_character":0,"end_line":421,"end_character":10},"in_reply_to":"9937317a_f8bb791d","updated":"2022-01-21 12:33:23.000000000","message":"Ack","commit_id":"a8075f942aa80ee80c80a5b910f3bc5b859a07fa"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"11de02107d4921797e7ae7450570978e38b98892","unresolved":true,"context_lines":[{"line_number":454,"context_line":""},{"line_number":455,"context_line":"      none_migration -\u003e starting -\u003e migrating -\u003e completing -\u003e success -\u003e none_migration"},{"line_number":456,"context_line":"    }"},{"line_number":457,"context_line":""},{"line_number":458,"context_line":"    start -\u003e inuse"},{"line_number":459,"context_line":"    start -\u003e backingup"},{"line_number":460,"context_line":"    start -\u003e none_migration"},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"    inuse -\u003e end"},{"line_number":463,"context_line":"    backingup -\u003e end"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1b4a6b47_8a464fa9","line":460,"range":{"start_line":457,"start_character":0,"end_line":460,"end_character":27},"updated":"2022-01-07 14:37:04.000000000","message":"Remove as suggested above","commit_id":"a8075f942aa80ee80c80a5b910f3bc5b859a07fa"},{"author":{"_account_id":34149,"name":"Niklas Schwarz","email":"niklas.schwarz@inovex.de","username":"nschwarz"},"change_message_id":"8054477f648254f985491e37687d008d321aad80","unresolved":false,"context_lines":[{"line_number":454,"context_line":""},{"line_number":455,"context_line":"      none_migration -\u003e starting -\u003e migrating -\u003e completing -\u003e success -\u003e none_migration"},{"line_number":456,"context_line":"    }"},{"line_number":457,"context_line":""},{"line_number":458,"context_line":"    start -\u003e inuse"},{"line_number":459,"context_line":"    start -\u003e backingup"},{"line_number":460,"context_line":"    start -\u003e none_migration"},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"    inuse -\u003e end"},{"line_number":463,"context_line":"    backingup -\u003e end"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5aaa0bc1_4b7319cf","line":460,"range":{"start_line":457,"start_character":0,"end_line":460,"end_character":27},"in_reply_to":"1b4a6b47_8a464fa9","updated":"2022-01-21 12:33:23.000000000","message":"Ack","commit_id":"a8075f942aa80ee80c80a5b910f3bc5b859a07fa"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"11de02107d4921797e7ae7450570978e38b98892","unresolved":true,"context_lines":[{"line_number":485,"context_line":""},{"line_number":486,"context_line":"  digraph G{"},{"line_number":487,"context_line":""},{"line_number":488,"context_line":"    node[shape\u003dpoint];"},{"line_number":489,"context_line":"    start;"},{"line_number":490,"context_line":"    node[shape\u003ddoublecircle fontsize\u003d10 fontname\u003d\"Monospace\"];"},{"line_number":491,"context_line":"    end;"},{"line_number":492,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"8a66bd6e_9343f53f","line":489,"range":{"start_line":488,"start_character":0,"end_line":489,"end_character":10},"updated":"2022-01-07 14:37:04.000000000","message":"Remove and lines 524-526","commit_id":"a8075f942aa80ee80c80a5b910f3bc5b859a07fa"},{"author":{"_account_id":34149,"name":"Niklas Schwarz","email":"niklas.schwarz@inovex.de","username":"nschwarz"},"change_message_id":"8054477f648254f985491e37687d008d321aad80","unresolved":false,"context_lines":[{"line_number":485,"context_line":""},{"line_number":486,"context_line":"  digraph G{"},{"line_number":487,"context_line":""},{"line_number":488,"context_line":"    node[shape\u003dpoint];"},{"line_number":489,"context_line":"    start;"},{"line_number":490,"context_line":"    node[shape\u003ddoublecircle fontsize\u003d10 fontname\u003d\"Monospace\"];"},{"line_number":491,"context_line":"    end;"},{"line_number":492,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"3d5272b4_a7ae2fcf","line":489,"range":{"start_line":488,"start_character":0,"end_line":489,"end_character":10},"in_reply_to":"8a66bd6e_9343f53f","updated":"2022-01-21 12:33:23.000000000","message":"Ack","commit_id":"a8075f942aa80ee80c80a5b910f3bc5b859a07fa"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"11de02107d4921797e7ae7450570978e38b98892","unresolved":true,"context_lines":[{"line_number":521,"context_line":"      none_migration [label\u003d\"NONE\"]"},{"line_number":522,"context_line":"    }"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"    start -\u003e available"},{"line_number":525,"context_line":"    start -\u003e backingup"},{"line_number":526,"context_line":"    start -\u003e none_migration"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"    available -\u003e end"},{"line_number":529,"context_line":"    backingup -\u003e end"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7556b35b_2da0fd60","line":526,"range":{"start_line":524,"start_character":0,"end_line":526,"end_character":27},"updated":"2022-01-07 14:37:04.000000000","message":"Remove as suggested above","commit_id":"a8075f942aa80ee80c80a5b910f3bc5b859a07fa"},{"author":{"_account_id":34149,"name":"Niklas Schwarz","email":"niklas.schwarz@inovex.de","username":"nschwarz"},"change_message_id":"8054477f648254f985491e37687d008d321aad80","unresolved":false,"context_lines":[{"line_number":521,"context_line":"      none_migration [label\u003d\"NONE\"]"},{"line_number":522,"context_line":"    }"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"    start -\u003e available"},{"line_number":525,"context_line":"    start -\u003e backingup"},{"line_number":526,"context_line":"    start -\u003e none_migration"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"    available -\u003e end"},{"line_number":529,"context_line":"    backingup -\u003e end"}],"source_content_type":"text/x-rst","patch_set":5,"id":"8ce7ec88_88bdd631","line":526,"range":{"start_line":524,"start_character":0,"end_line":526,"end_character":27},"in_reply_to":"7556b35b_2da0fd60","updated":"2022-01-21 12:33:23.000000000","message":"Ack","commit_id":"a8075f942aa80ee80c80a5b910f3bc5b859a07fa"}],"specs/zed/move-task-status-to-dedicated-field.rst":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"603c73e786ff705bc5affb2b3b9606d2775ed9eb","unresolved":true,"context_lines":[{"line_number":13,"context_line":"This spec proposes a change/update to the status field of a volume and the"},{"line_number":14,"context_line":"introduction of a new field to hold the status of tasks. While many actions"},{"line_number":15,"context_line":"can happen simultaneously (e.g. backup-driver and block device-driver acting"},{"line_number":16,"context_line":"independently), the state of two independently running tasks cannot be"},{"line_number":17,"context_line":"represented by only one status value and a single field holding it. Currently"},{"line_number":18,"context_line":"all actions block each other through this single field and usually require the"},{"line_number":19,"context_line":"volume to be in an idle state (`in-use`, `available`,...), consequently"}],"source_content_type":"text/x-rst","patch_set":7,"id":"68ef8cc6_05c32b7f","line":16,"range":{"start_line":16,"start_character":13,"end_line":16,"end_character":14},"updated":"2022-06-20 16:58:18.000000000","message":"on the same volume?\nwould be good to be explicit here that we\u0027re talking about the same volume/resource","commit_id":"655427eea06907ffe414461328e2f801de5da0b5"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"603c73e786ff705bc5affb2b3b9606d2775ed9eb","unresolved":true,"context_lines":[{"line_number":16,"context_line":"independently), the state of two independently running tasks cannot be"},{"line_number":17,"context_line":"represented by only one status value and a single field holding it. Currently"},{"line_number":18,"context_line":"all actions block each other through this single field and usually require the"},{"line_number":19,"context_line":"volume to be in an idle state (`in-use`, `available`,...), consequently"},{"line_number":20,"context_line":"serializing all tasks."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Problem description"},{"line_number":23,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":7,"id":"347900f6_36aa7d81","line":20,"range":{"start_line":19,"start_character":59,"end_line":20,"end_character":22},"updated":"2022-06-20 16:58:18.000000000","message":"we need to be careful about which tasks are mutually exclusive i.e. can run in parallel and which should be serialized to ensure we don\u0027t have race conditions.","commit_id":"655427eea06907ffe414461328e2f801de5da0b5"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"8e5fed653b7df708296cce30dc776692c3fcfc19","unresolved":true,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"This causes cinder to not allow two or more independent actions happening at"},{"line_number":31,"context_line":"the same time even if different drivers are used or the actions could run"},{"line_number":32,"context_line":"concurrently on the same volume."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Since the actual volume status is `lost` while a task is running, this status"},{"line_number":35,"context_line":"is temporarily saved in a field previous_status"}],"source_content_type":"text/x-rst","patch_set":7,"id":"c8949351_c93f84ba","line":32,"updated":"2022-04-01 12:12:06.000000000","message":"Cinder does this on purpose to not allow multiple actions being taken on a volume at the same time. Changing this will lead to pain and suffering.  As someone that operates several large deployments of cinder, I don\u0027t want to have to debug problems due to multiple actions being taken on a volume at once.  This is a bad idea.","commit_id":"655427eea06907ffe414461328e2f801de5da0b5"},{"author":{"_account_id":34149,"name":"Niklas Schwarz","email":"niklas.schwarz@inovex.de","username":"nschwarz"},"change_message_id":"5c17282550e7c24a4c4c18531f4b9dd9b8c9d2ae","unresolved":true,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"This causes cinder to not allow two or more independent actions happening at"},{"line_number":31,"context_line":"the same time even if different drivers are used or the actions could run"},{"line_number":32,"context_line":"concurrently on the same volume."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Since the actual volume status is `lost` while a task is running, this status"},{"line_number":35,"context_line":"is temporarily saved in a field previous_status"}],"source_content_type":"text/x-rst","patch_set":7,"id":"82b2a3a7_e2d95807","line":32,"in_reply_to":"c8949351_c93f84ba","updated":"2022-04-14 08:37:22.000000000","message":"Maybe it was not clear from the spec but the spec only proposes that only one other specified operation can run concurrently on the same volume. This is why the split up of the status is done. The base actions, such as attaching, change the status, actions such as backing_up change the task_status. But in general only one base operation and one independent operation can run on the volume, resulting in two distinct state machines (please have a look at the state machines included in the spec)","commit_id":"655427eea06907ffe414461328e2f801de5da0b5"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"8e5fed653b7df708296cce30dc776692c3fcfc19","unresolved":true,"context_lines":[{"line_number":50,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"One use case can be any attachment change of a volume (e.g. as it happens"},{"line_number":53,"context_line":"during an instance live-migration) and a concurrently run volume backup. This"},{"line_number":54,"context_line":"is currently not possible, but should be since a backup is usually done on a"},{"line_number":55,"context_line":"snapshot of the volume with an independent lifecycle and also by another"},{"line_number":56,"context_line":"component, like cinder-backup. These two actions, re-attaching the volume to"}],"source_content_type":"text/x-rst","patch_set":7,"id":"d66b6d46_3d5ec447","line":53,"updated":"2022-04-01 12:12:06.000000000","message":"volume backups typically happen against a snapshot/clone of an attached volume.  So the backup process doesn\u0027t block the volume being detached after the backup has started.","commit_id":"655427eea06907ffe414461328e2f801de5da0b5"},{"author":{"_account_id":34149,"name":"Niklas Schwarz","email":"niklas.schwarz@inovex.de","username":"nschwarz"},"change_message_id":"5c17282550e7c24a4c4c18531f4b9dd9b8c9d2ae","unresolved":true,"context_lines":[{"line_number":50,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"One use case can be any attachment change of a volume (e.g. as it happens"},{"line_number":53,"context_line":"during an instance live-migration) and a concurrently run volume backup. This"},{"line_number":54,"context_line":"is currently not possible, but should be since a backup is usually done on a"},{"line_number":55,"context_line":"snapshot of the volume with an independent lifecycle and also by another"},{"line_number":56,"context_line":"component, like cinder-backup. These two actions, re-attaching the volume to"}],"source_content_type":"text/x-rst","patch_set":7,"id":"04507d64_d62e8748","line":53,"in_reply_to":"d66b6d46_3d5ec447","updated":"2022-04-14 08:37:22.000000000","message":"But this is currently happening when a volume backup is created. As described in the use case or in the mentioned blueprint (https://blueprints.launchpad.net/cinder/+spec/move-task-status-to-dedicated-field) the status is checked for a specified status which does not include the migrating status (see: https://opendev.org/openstack/cinder/src/commit/3e048975d0f75b983c69974945f8e5a9792c488a/cinder/volume/api.py#L2112) when the attachment is reserved.\n\nAs you have mentioned because the backup-process happens on a snapshot/clone and is handled by a different driver such a task can run as a separate tasks because it does not affect the volume itself.","commit_id":"655427eea06907ffe414461328e2f801de5da0b5"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"603c73e786ff705bc5affb2b3b9606d2775ed9eb","unresolved":true,"context_lines":[{"line_number":59,"context_line":"represented in just one status field and value"},{"line_number":60,"context_line":"(https://opendev.org/openstack/cinder/src/commit/3e048975d0f75b983c69974945f8e5a9792c488a/cinder/volume/api.py#L2112)."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"To make matters worse, the potentially long running backup (task) could also"},{"line_number":63,"context_line":"have been triggered by the user and then be blocking administrative actions"},{"line_number":64,"context_line":"such as instance migrations to another host. Provided sufficiently large"},{"line_number":65,"context_line":"volumes or a slow backup process to a remote location this is not a matter of"},{"line_number":66,"context_line":"seconds or minutes. In general multiple actions could modify or work with a"},{"line_number":67,"context_line":"volume concurrently, facilitating a decoupling and general speed-up."}],"source_content_type":"text/x-rst","patch_set":7,"id":"9b762d7a_fe7319a8","line":64,"range":{"start_line":62,"start_character":23,"end_line":64,"end_character":43},"updated":"2022-06-20 16:58:18.000000000","message":"The example I can see throughout the use case is parallel operation of instance block live migration and creating a backup. are there any other cases that benefit from this additional task field?\nI would very much like to see a table of all the operations mapped with other operations that can be performed in a mutually exclusive way and hence benefit from this task field.","commit_id":"655427eea06907ffe414461328e2f801de5da0b5"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"603c73e786ff705bc5affb2b3b9606d2775ed9eb","unresolved":true,"context_lines":[{"line_number":106,"context_line":"logic and conditions to handle much more complicated."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"Another approach would be the introduction of ever more fields like the"},{"line_number":109,"context_line":"replication_status, migration_status representing independent operations, for"},{"line_number":110,"context_line":"i.e. the backup process. While this would allow for even more independently"},{"line_number":111,"context_line":"running tasks or operations, the synchronisation complexity would increase"},{"line_number":112,"context_line":"more and more, always affecting most or all actors on volumes."}],"source_content_type":"text/x-rst","patch_set":7,"id":"3db8ac1a_2d790a59","line":109,"range":{"start_line":109,"start_character":20,"end_line":109,"end_character":36},"updated":"2022-06-20 16:58:18.000000000","message":"we already have fields for attach_status and migration status[1] fields in volume but we use it in combination with the status field.\n\n[1] https://github.com/openstack/cinder/blob/master/cinder/objects/volume.py#L99-L100","commit_id":"655427eea06907ffe414461328e2f801de5da0b5"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"603c73e786ff705bc5affb2b3b9606d2775ed9eb","unresolved":true,"context_lines":[{"line_number":343,"context_line":""},{"line_number":344,"context_line":"Additional endpoints (only available with the use of the new micro version)"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"* Set volume task_status"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"* Unset volume task_status"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"Security impact"},{"line_number":351,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"4fcee280_57835047","line":348,"range":{"start_line":346,"start_character":0,"end_line":348,"end_character":26},"updated":"2022-06-20 16:58:18.000000000","message":"can\u0027t we do both of these with a single ``reset task_status`` endpoint like we do for other resources.","commit_id":"655427eea06907ffe414461328e2f801de5da0b5"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"603c73e786ff705bc5affb2b3b9606d2775ed9eb","unresolved":true,"context_lines":[{"line_number":375,"context_line":"volume, lists the details to the volume."},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"Expected Response:"},{"line_number":378,"context_line":"Due to the fact that the migration status is stored separately the migration"},{"line_number":379,"context_line":"and the backup can happen concurrently."},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d  \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":382,"context_line":"Field        Value"}],"source_content_type":"text/x-rst","patch_set":7,"id":"e1a2ad2a_1b6c02fa","line":379,"range":{"start_line":378,"start_character":0,"end_line":379,"end_character":39},"updated":"2022-06-20 16:58:18.000000000","message":"what happens if a volume delete request is issued at this point? since the volume is available, the delete goes through, then how are we going to block the volume deletion until the migration or backup is completed?\n\nAlso this can be done without the task_field. if the purpose is to live migrate and backup at the same time, just change migration_status to migrating and status to backing-up.","commit_id":"655427eea06907ffe414461328e2f801de5da0b5"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"603c73e786ff705bc5affb2b3b9606d2775ed9eb","unresolved":true,"context_lines":[{"line_number":504,"context_line":"The change above has the impact that all methods have to be checked which allow"},{"line_number":505,"context_line":"concurrent interaction with a volume and use the task_status field instead of"},{"line_number":506,"context_line":"the status field to indicate a running process."},{"line_number":507,"context_line":"This change should be communicated to other developer teams that rely on the"},{"line_number":508,"context_line":"cinder api to check on the status to either use an old microversion or update"},{"line_number":509,"context_line":"to use the status and the task_status."},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"Because the status is currently used as a locking mechanism to prevent actions"},{"line_number":512,"context_line":"to start if an invalid status is reached, the method calls in the api have to"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3bbd85fd_1bd2b70f","line":509,"range":{"start_line":507,"start_character":0,"end_line":509,"end_character":38},"updated":"2022-06-20 16:58:18.000000000","message":"nova and glance rely on volume status field for states like attaching, detaching, extending etc when waiting for cinder to complete an operation and same case in tempest waiters. This is clearly a massive change and the developer of the cinder change needs to account for all the changes that needs to be done all across OpenStack to adhere to the new behavior else it will break cinder\u0027s compatibility with any service that request the latest microversion.","commit_id":"655427eea06907ffe414461328e2f801de5da0b5"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"603c73e786ff705bc5affb2b3b9606d2775ed9eb","unresolved":true,"context_lines":[{"line_number":533,"context_line":"Assignee(s)"},{"line_number":534,"context_line":"-----------"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"To be discussed"},{"line_number":537,"context_line":""},{"line_number":538,"context_line":"Work Items"},{"line_number":539,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"295d928f_f16a79ec","line":536,"range":{"start_line":536,"start_character":0,"end_line":536,"end_character":15},"updated":"2022-06-20 16:58:18.000000000","message":"this is a huge effort across multiple projects and without any dedicated assignee, i see no point in accepting the proposal.","commit_id":"655427eea06907ffe414461328e2f801de5da0b5"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"603c73e786ff705bc5affb2b3b9606d2775ed9eb","unresolved":true,"context_lines":[{"line_number":585,"context_line":""},{"line_number":586,"context_line":"To be discussed"},{"line_number":587,"context_line":""},{"line_number":588,"context_line":"Testing"},{"line_number":589,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":590,"context_line":""},{"line_number":591,"context_line":"Only the reduced set of states are allowed for the status field. Each other"}],"source_content_type":"text/x-rst","patch_set":7,"id":"ba6b507d_7d61793e","line":588,"range":{"start_line":588,"start_character":0,"end_line":588,"end_character":7},"updated":"2022-06-20 16:58:18.000000000","message":"Almost all of existing tempest test related to volumes needs to be modified as the waiters currently check for states like creating, attaching, detaching, extending etc","commit_id":"655427eea06907ffe414461328e2f801de5da0b5"}]}
