)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"c50bc4dcc200cfc7611f6eb8f0d28540fffd901c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"d6199531_18308ba3","updated":"2022-06-09 11:53:22.000000000","message":"Thanks for drafting the spec.\nI definitely see the value for operators to be able to know what is Cinder currently doing.","commit_id":"8eaeb1f936b0a93a678539d9db21e96b62ff2a45"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"037c57b92075bac89f6c271611bfccccd140bfc8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"1f3ebc6a_84f9f20a","updated":"2022-06-20 07:07:47.000000000","message":"I see the spec is in WIP but this is the spec freeze week so if we want to get this in, this needs to be updated frequently to address the comments. Some sections are incomplete. REST API and client side changes should be elaborated, like the cinderclient command and how the new API is going to look like. Also this will require a MV bump.","commit_id":"ccacd0c2e13326565674d4372b011179fb8169a4"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"33685868024d563e588bf1aca06db9de91bd5460","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"d9523060_f58c910d","updated":"2026-02-19 14:43:56.000000000","message":"This appears to be stale so probably should be abandoned","commit_id":"ccacd0c2e13326565674d4372b011179fb8169a4"}],"specs/zed/transaction-tracking.rst":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"c50bc4dcc200cfc7611f6eb8f0d28540fffd901c","unresolved":true,"context_lines":[{"line_number":13,"context_line":"https://blueprints.launchpad.net/cinder/+spec/example"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Cinder currently doesn\u0027t keep track of what it\u0027s doing internally"},{"line_number":16,"context_line":"with respect to volume transactions.   There is no way to know if"},{"line_number":17,"context_line":"cinder is busy with a long running process, such as backup, migration,"},{"line_number":18,"context_line":"create from image, etc as well as how many transactions are currently"},{"line_number":19,"context_line":"in process.  This is problematic for several reasons and can lead to"},{"line_number":20,"context_line":"volume state inconsistencies."}],"source_content_type":"text/x-rst","patch_set":1,"id":"d68f7cb0_4d68ce32","line":17,"range":{"start_line":16,"start_character":40,"end_line":17,"end_character":69},"updated":"2022-06-09 11:53:22.000000000","message":"nit: For some requests there is a way, using the workers table. Though the information there is probably insufficient for what you want or maybe the problem is that it only stores information for operations that are cleanable.\n\nIn that table we have:\n- When the request was started\n- Last time a service (API/SCH/VOL) received the request\n- Cinder Service that last received the request (for API it\u0027s empty)\n- Resource type (volume, snapshot, etc)\n- Resource ID","commit_id":"8eaeb1f936b0a93a678539d9db21e96b62ff2a45"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"c50bc4dcc200cfc7611f6eb8f0d28540fffd901c","unresolved":true,"context_lines":[{"line_number":38,"context_line":"For example the creation of a volume starts with the Cinder API service"},{"line_number":39,"context_line":"receiving a request to create a volume. The Cinder API does some minimal"},{"line_number":40,"context_line":"validation, then calls the volume api to create the volume.  The volume api"},{"line_number":41,"context_line":"does some more validation then calls the scheduler\u0027s task flow engine to create"},{"line_number":42,"context_line":"the volume.  The scheduler\u0027s task flow runs creates the spec and then runs the"},{"line_number":43,"context_line":"request through the scheduler, which then calls the volume manger\u0027s task flow to"},{"line_number":44,"context_line":"create the volume. The volume manager\u0027s task flow calls the driver to create the"}],"source_content_type":"text/x-rst","patch_set":1,"id":"2b333cf8_146f6454","line":41,"range":{"start_line":41,"start_character":31,"end_line":41,"end_character":52},"updated":"2022-06-09 11:53:22.000000000","message":"nit: I think this can be misleading, because it\u0027s not really the scheduler\u0027s task flow, it\u0027s still in the API (cinder/volume/flows/api/create_volume.py) and this sentence could make someone think that the code did the RPC call to the scheduler.","commit_id":"8eaeb1f936b0a93a678539d9db21e96b62ff2a45"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a5b5d8197f5b6c289171472ad54d7efccb1a9269","unresolved":true,"context_lines":[{"line_number":38,"context_line":"For example the creation of a volume starts with the Cinder API service"},{"line_number":39,"context_line":"receiving a request to create a volume. The Cinder API does some minimal"},{"line_number":40,"context_line":"validation, then calls the volume api to create the volume.  The volume api"},{"line_number":41,"context_line":"does some more validation then calls the scheduler\u0027s task flow engine to create"},{"line_number":42,"context_line":"the volume.  The scheduler\u0027s task flow runs creates the spec and then runs the"},{"line_number":43,"context_line":"request through the scheduler, which then calls the volume manger\u0027s task flow to"},{"line_number":44,"context_line":"create the volume. The volume manager\u0027s task flow calls the driver to create the"}],"source_content_type":"text/x-rst","patch_set":1,"id":"97b609e7_2b2be3f8","line":41,"range":{"start_line":41,"start_character":31,"end_line":41,"end_character":52},"in_reply_to":"2b333cf8_146f6454","updated":"2022-06-09 19:53:20.000000000","message":"I was talking about the scheduler\u0027s task flow for create volume here:\nhttps://github.com/openstack/cinder/blob/master/cinder/scheduler/flows/create_volume.py","commit_id":"8eaeb1f936b0a93a678539d9db21e96b62ff2a45"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"037c57b92075bac89f6c271611bfccccd140bfc8","unresolved":true,"context_lines":[{"line_number":38,"context_line":"For example the creation of a volume starts with the Cinder API service"},{"line_number":39,"context_line":"receiving a request to create a volume. The Cinder API does some minimal"},{"line_number":40,"context_line":"validation, then calls the volume api to create the volume.  The volume api"},{"line_number":41,"context_line":"does some more validation then calls the scheduler\u0027s task flow engine to create"},{"line_number":42,"context_line":"the volume.  The scheduler\u0027s task flow runs creates the spec and then runs the"},{"line_number":43,"context_line":"request through the scheduler, which then calls the volume manger\u0027s task flow to"},{"line_number":44,"context_line":"create the volume. The volume manager\u0027s task flow calls the driver to create the"}],"source_content_type":"text/x-rst","patch_set":1,"id":"0ad54d4f_6471f7b9","line":41,"range":{"start_line":41,"start_character":31,"end_line":41,"end_character":52},"in_reply_to":"97b609e7_2b2be3f8","updated":"2022-06-20 07:07:47.000000000","message":"Would be good to add both cinder APIs taskflow and scheduler\u0027s taskflow points here like APIs taskflow calls scheduler\u0027s taskflow","commit_id":"8eaeb1f936b0a93a678539d9db21e96b62ff2a45"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"c50bc4dcc200cfc7611f6eb8f0d28540fffd901c","unresolved":true,"context_lines":[{"line_number":40,"context_line":"validation, then calls the volume api to create the volume.  The volume api"},{"line_number":41,"context_line":"does some more validation then calls the scheduler\u0027s task flow engine to create"},{"line_number":42,"context_line":"the volume.  The scheduler\u0027s task flow runs creates the spec and then runs the"},{"line_number":43,"context_line":"request through the scheduler, which then calls the volume manger\u0027s task flow to"},{"line_number":44,"context_line":"create the volume. The volume manager\u0027s task flow calls the driver to create the"},{"line_number":45,"context_line":"volume.   There are other paths that a volume create can take, especially if"},{"line_number":46,"context_line":"it\u0027s create from an existing volume, or snapshot or image.   Each stage of this"}],"source_content_type":"text/x-rst","patch_set":1,"id":"2734e365_e97545e2","line":43,"range":{"start_line":43,"start_character":59,"end_line":43,"end_character":67},"updated":"2022-06-09 11:53:22.000000000","message":"nit: manager\u0027s","commit_id":"8eaeb1f936b0a93a678539d9db21e96b62ff2a45"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a5b5d8197f5b6c289171472ad54d7efccb1a9269","unresolved":false,"context_lines":[{"line_number":40,"context_line":"validation, then calls the volume api to create the volume.  The volume api"},{"line_number":41,"context_line":"does some more validation then calls the scheduler\u0027s task flow engine to create"},{"line_number":42,"context_line":"the volume.  The scheduler\u0027s task flow runs creates the spec and then runs the"},{"line_number":43,"context_line":"request through the scheduler, which then calls the volume manger\u0027s task flow to"},{"line_number":44,"context_line":"create the volume. The volume manager\u0027s task flow calls the driver to create the"},{"line_number":45,"context_line":"volume.   There are other paths that a volume create can take, especially if"},{"line_number":46,"context_line":"it\u0027s create from an existing volume, or snapshot or image.   Each stage of this"}],"source_content_type":"text/x-rst","patch_set":1,"id":"501d9737_928c8df9","line":43,"range":{"start_line":43,"start_character":59,"end_line":43,"end_character":67},"in_reply_to":"2734e365_e97545e2","updated":"2022-06-09 19:53:20.000000000","message":"Done","commit_id":"8eaeb1f936b0a93a678539d9db21e96b62ff2a45"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"c50bc4dcc200cfc7611f6eb8f0d28540fffd901c","unresolved":true,"context_lines":[{"line_number":51,"context_line":"that an operator can see which transactions are still outstanding and how"},{"line_number":52,"context_line":"many there are.  Think linux top command.  This same transaction tracking"},{"line_number":53,"context_line":"would be a starting point for graceful shutdown and then eventually"},{"line_number":54,"context_line":"restarting transactions that aren\u0027t complete during the next cinder start."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Problems for operators happen when cinder is restarted in the middle of the"},{"line_number":57,"context_line":"volume transaction.  This can lead to volume state inconsistencies or states"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1b30aab6_a4a5b328","line":54,"range":{"start_line":54,"start_character":0,"end_line":54,"end_character":74},"updated":"2022-06-09 11:53:22.000000000","message":"We currently do that with the workers table, albeit the current cleanup mechanism is insufficient in terms of supported states and how it resolves those situations (mostly setting resource to error).","commit_id":"8eaeb1f936b0a93a678539d9db21e96b62ff2a45"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"c50bc4dcc200cfc7611f6eb8f0d28540fffd901c","unresolved":true,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Problems for operators happen when cinder is restarted in the middle of the"},{"line_number":57,"context_line":"volume transaction.  This can lead to volume state inconsistencies or states"},{"line_number":58,"context_line":"that are stuck, such as creating, migrating, attaching.  The operator is left"},{"line_number":59,"context_line":"to track down what part of the transaction the volume was in and then reset"},{"line_number":60,"context_line":"the state of the volume to something that another transaction can be done"},{"line_number":61,"context_line":"on the volume, such as delete."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f6663ca_7deb9ea1","line":58,"range":{"start_line":58,"start_character":16,"end_line":58,"end_character":55},"updated":"2022-06-09 11:53:22.000000000","message":"Creating should be moving to error now (if it\u0027s not currently broken).","commit_id":"8eaeb1f936b0a93a678539d9db21e96b62ff2a45"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"c50bc4dcc200cfc7611f6eb8f0d28540fffd901c","unresolved":true,"context_lines":[{"line_number":72,"context_line":"Create a DB transactions table to track:"},{"line_number":73,"context_line":"transaction type (create, delete, migrate, backup), state, progress, host,"},{"line_number":74,"context_line":"volume id,"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":1,"id":"d133c5ca_44dff800","line":75,"updated":"2022-06-09 11:53:22.000000000","message":"Why not use, possibly extending, the Workers table?\nCurrently we can get a lot of information (only for some operations) from there.","commit_id":"8eaeb1f936b0a93a678539d9db21e96b62ff2a45"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a5b5d8197f5b6c289171472ad54d7efccb1a9269","unresolved":true,"context_lines":[{"line_number":72,"context_line":"Create a DB transactions table to track:"},{"line_number":73,"context_line":"transaction type (create, delete, migrate, backup), state, progress, host,"},{"line_number":74,"context_line":"volume id,"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":1,"id":"eccda1ed_30234c20","line":75,"in_reply_to":"d133c5ca_44dff800","updated":"2022-06-09 19:53:20.000000000","message":"It looks like the workers table isn\u0027t used for much.  Also it has individual rows for each state change and there is no progress ability.\n\nThe volume transactions table should have 1 row that is updated with the current status, instead of creating a new row for a change in status.  Maybe the 2 tables can coexist where the workers table points to a transaction table entry via foreign key.  The goal is to have every volume action tracked.  It looks like the workers table is a locking mechanism for clustering as well as a rudimentary cleanup mechanism to get volumes out if an \u0027ing\u0027 state into error state at next startup.","commit_id":"8eaeb1f936b0a93a678539d9db21e96b62ff2a45"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"c50bc4dcc200cfc7611f6eb8f0d28540fffd901c","unresolved":true,"context_lines":[{"line_number":79,"context_line":"------------"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"Currently, tailing the api, scheduler, volume, backup logs to see if"},{"line_number":82,"context_line":"cinder is \u0027busy\u0027 doing anything."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"An alternative is to create a transaction project, that can be used by any"},{"line_number":85,"context_line":"openstack project to track transactions.  Cinder would use an API of some sort"}],"source_content_type":"text/x-rst","patch_set":1,"id":"b0ce8e4b_ce31372f","line":82,"range":{"start_line":82,"start_character":23,"end_line":82,"end_character":31},"updated":"2022-06-09 11:53:22.000000000","message":"?: something","commit_id":"8eaeb1f936b0a93a678539d9db21e96b62ff2a45"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a5b5d8197f5b6c289171472ad54d7efccb1a9269","unresolved":false,"context_lines":[{"line_number":79,"context_line":"------------"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"Currently, tailing the api, scheduler, volume, backup logs to see if"},{"line_number":82,"context_line":"cinder is \u0027busy\u0027 doing anything."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"An alternative is to create a transaction project, that can be used by any"},{"line_number":85,"context_line":"openstack project to track transactions.  Cinder would use an API of some sort"}],"source_content_type":"text/x-rst","patch_set":1,"id":"8bec66a2_04ad6a2c","line":82,"range":{"start_line":82,"start_character":23,"end_line":82,"end_character":31},"in_reply_to":"b0ce8e4b_ce31372f","updated":"2022-06-09 19:53:20.000000000","message":"Done","commit_id":"8eaeb1f936b0a93a678539d9db21e96b62ff2a45"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"c50bc4dcc200cfc7611f6eb8f0d28540fffd901c","unresolved":true,"context_lines":[{"line_number":90,"context_line":"Data model impact"},{"line_number":91,"context_line":"-----------------"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"New DB table(s) for tracking the transactions.  Do we need multiple tables?"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"REST API impact"},{"line_number":96,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"d94357c6_23549ccb","line":93,"updated":"2022-06-09 11:53:22.000000000","message":"Would this be a soft-delete table (like most of our tables) or a hard-delete one (like the workers table)?\n\nI like hard deletion because it\u0027s self-cleaning, but from an operator\u0027s point of view I can see the great benefit of keeping transaction record there, as one could see the operations that have been done on a specific resource, and if we add the request ID to the records then it could be even better.","commit_id":"8eaeb1f936b0a93a678539d9db21e96b62ff2a45"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"037c57b92075bac89f6c271611bfccccd140bfc8","unresolved":true,"context_lines":[{"line_number":90,"context_line":"Data model impact"},{"line_number":91,"context_line":"-----------------"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"New DB table(s) for tracking the transactions.  Do we need multiple tables?"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"REST API impact"},{"line_number":96,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1351c6f7_f73f450a","line":93,"in_reply_to":"2a09bdaa_4f16fce2","updated":"2022-06-20 07:07:47.000000000","message":"Would be good to mention this point in the spec so we can differentiate between the workers (hard delete) and transactions (soft delete) tables.","commit_id":"8eaeb1f936b0a93a678539d9db21e96b62ff2a45"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a5b5d8197f5b6c289171472ad54d7efccb1a9269","unresolved":true,"context_lines":[{"line_number":90,"context_line":"Data model impact"},{"line_number":91,"context_line":"-----------------"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"New DB table(s) for tracking the transactions.  Do we need multiple tables?"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"REST API impact"},{"line_number":96,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"2a09bdaa_4f16fce2","line":93,"in_reply_to":"d94357c6_23549ccb","updated":"2022-06-09 19:53:20.000000000","message":"I think I would like it to be a soft delete table as I can use it to help track down why some transactions have failed in production.","commit_id":"8eaeb1f936b0a93a678539d9db21e96b62ff2a45"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"c50bc4dcc200cfc7611f6eb8f0d28540fffd901c","unresolved":true,"context_lines":[{"line_number":115,"context_line":"Would be nice to have notifications support for start of the transaction"},{"line_number":116,"context_line":"as well as completion.  Cinder currently supports some start/end processing"},{"line_number":117,"context_line":"of request notifications, but this new transaction tracking mechanism could"},{"line_number":118,"context_line":"unify notifications for all volume transactions."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"Other end user impact"},{"line_number":121,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ed972656_951a0607","line":118,"updated":"2022-06-09 11:53:22.000000000","message":"This is an interesting idea.  It would make sense to consolidate actions that should happen on the start/end of transactions: send notification, track in DB, etc.","commit_id":"8eaeb1f936b0a93a678539d9db21e96b62ff2a45"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"c50bc4dcc200cfc7611f6eb8f0d28540fffd901c","unresolved":true,"context_lines":[{"line_number":117,"context_line":"of request notifications, but this new transaction tracking mechanism could"},{"line_number":118,"context_line":"unify notifications for all volume transactions."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"Other end user impact"},{"line_number":121,"context_line":"---------------------"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"Aside from the API, are there other ways a user will interact with this"}],"source_content_type":"text/x-rst","patch_set":1,"id":"e6899ded_d00cb9cc","line":120,"updated":"2022-06-09 11:53:22.000000000","message":"Looks like the draft is only up to this point for now.","commit_id":"8eaeb1f936b0a93a678539d9db21e96b62ff2a45"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a5b5d8197f5b6c289171472ad54d7efccb1a9269","unresolved":true,"context_lines":[{"line_number":117,"context_line":"of request notifications, but this new transaction tracking mechanism could"},{"line_number":118,"context_line":"unify notifications for all volume transactions."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"Other end user impact"},{"line_number":121,"context_line":"---------------------"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"Aside from the API, are there other ways a user will interact with this"}],"source_content_type":"text/x-rst","patch_set":1,"id":"f03a6ccb_e7eefd4b","line":120,"in_reply_to":"e6899ded_d00cb9cc","updated":"2022-06-09 19:53:20.000000000","message":"yah this is where I stopped.","commit_id":"8eaeb1f936b0a93a678539d9db21e96b62ff2a45"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"037c57b92075bac89f6c271611bfccccd140bfc8","unresolved":true,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"As an operator, I want to know what cinder is doing at any given time."},{"line_number":23,"context_line":"Tailing the log file isn\u0027t sufficient.  There should be a \u0027top\u0027 like"},{"line_number":24,"context_line":"cinder client command where the operator can watch what volume transactions"},{"line_number":25,"context_line":"are taking place and when they complete.  This would be a useful step"},{"line_number":26,"context_line":"towards safely restarting the cinder volume/backup service."},{"line_number":27,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"6102e46c_1f72c81d","line":24,"range":{"start_line":24,"start_character":0,"end_line":24,"end_character":21},"updated":"2022-06-20 07:07:47.000000000","message":"should it be a cinderclient or a cinder-manage command?","commit_id":"ccacd0c2e13326565674d4372b011179fb8169a4"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"037c57b92075bac89f6c271611bfccccd140bfc8","unresolved":true,"context_lines":[{"line_number":39,"context_line":"receiving a request to create a volume. The Cinder API does some minimal"},{"line_number":40,"context_line":"validation, then calls the volume api to create the volume.  The volume api"},{"line_number":41,"context_line":"does some more validation then calls the scheduler\u0027s task flow engine to create"},{"line_number":42,"context_line":"the volume.  The scheduler\u0027s task flow runs creates the spec and then runs the"},{"line_number":43,"context_line":"request through the scheduler, which then calls the volume manager\u0027s task flow to"},{"line_number":44,"context_line":"create the volume. The volume manager\u0027s task flow calls the driver to create the"},{"line_number":45,"context_line":"volume.   There are other paths that a volume create can take, especially if"}],"source_content_type":"text/x-rst","patch_set":2,"id":"b9481104_842b542f","line":42,"range":{"start_line":42,"start_character":39,"end_line":42,"end_character":43},"updated":"2022-06-20 07:07:47.000000000","message":"nit: is this needed? \"The scheduler\u0027s task flow creates the spec\" makes perfect sense to me","commit_id":"ccacd0c2e13326565674d4372b011179fb8169a4"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"037c57b92075bac89f6c271611bfccccd140bfc8","unresolved":true,"context_lines":[{"line_number":43,"context_line":"request through the scheduler, which then calls the volume manager\u0027s task flow to"},{"line_number":44,"context_line":"create the volume. The volume manager\u0027s task flow calls the driver to create the"},{"line_number":45,"context_line":"volume.   There are other paths that a volume create can take, especially if"},{"line_number":46,"context_line":"it\u0027s create from an existing volume, or snapshot or image.   Each stage of this"},{"line_number":47,"context_line":"process is part of the volume transaction. The volume transaction is completed"},{"line_number":48,"context_line":"once the volume is created or the processing errors out."},{"line_number":49,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"2e2370ee_63b20e05","line":46,"range":{"start_line":46,"start_character":52,"end_line":46,"end_character":57},"updated":"2022-06-20 07:07:47.000000000","message":"or backup as well but i guess the point is clear.","commit_id":"ccacd0c2e13326565674d4372b011179fb8169a4"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"037c57b92075bac89f6c271611bfccccd140bfc8","unresolved":true,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Problems for operators happen when cinder is restarted in the middle of the"},{"line_number":57,"context_line":"volume transaction.  This can lead to volume state inconsistencies or states"},{"line_number":58,"context_line":"that are stuck, such as creating, migrating, attaching.  The operator is left"},{"line_number":59,"context_line":"to track down what part of the transaction the volume was in and then reset"},{"line_number":60,"context_line":"the state of the volume to something that another transaction can be done"},{"line_number":61,"context_line":"on the volume, such as delete."}],"source_content_type":"text/x-rst","patch_set":2,"id":"3d89652e_26c7a4fc","line":58,"range":{"start_line":58,"start_character":45,"end_line":58,"end_character":54},"updated":"2022-06-20 07:07:47.000000000","message":"\"stuck in attaching state\" is one of the pain point of operators as I\u0027ve seen","commit_id":"ccacd0c2e13326565674d4372b011179fb8169a4"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"037c57b92075bac89f6c271611bfccccd140bfc8","unresolved":true,"context_lines":[{"line_number":100,"context_line":"REST API impact"},{"line_number":101,"context_line":"---------------"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"Would need a new API for asking for the current list of non completed"},{"line_number":104,"context_line":"transactions.  This could be used by the cinder client to provide a point"},{"line_number":105,"context_line":"in time list and/or a \u0027live\u0027 view of running transactions."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Security impact"},{"line_number":108,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"d8025a6a_7a73451f","line":105,"range":{"start_line":103,"start_character":0,"end_line":105,"end_character":58},"updated":"2022-06-20 07:07:47.000000000","message":"Need an example of how the new API is going to look like, URL, method, request, response, error codes etc","commit_id":"ccacd0c2e13326565674d4372b011179fb8169a4"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"037c57b92075bac89f6c271611bfccccd140bfc8","unresolved":true,"context_lines":[{"line_number":107,"context_line":"Security impact"},{"line_number":108,"context_line":"---------------"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"meh"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"Active/Active HA impact"},{"line_number":113,"context_line":"-----------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"aacf5754_be699aff","line":110,"range":{"start_line":110,"start_character":0,"end_line":110,"end_character":3},"updated":"2022-06-20 07:07:47.000000000","message":"I\u0027m not clear with the meaning of this so please use the standard None if you meant that? :)","commit_id":"ccacd0c2e13326565674d4372b011179fb8169a4"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"037c57b92075bac89f6c271611bfccccd140bfc8","unresolved":true,"context_lines":[{"line_number":112,"context_line":"Active/Active HA impact"},{"line_number":113,"context_line":"-----------------------"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"hard"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"Notifications impact"},{"line_number":118,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5c112de4_5b79002b","line":115,"range":{"start_line":115,"start_character":0,"end_line":115,"end_character":4},"updated":"2022-06-20 07:07:47.000000000","message":"not sure what this means either, is it complex to determine the A-A impact or this won\u0027t work well with A-A?","commit_id":"ccacd0c2e13326565674d4372b011179fb8169a4"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"037c57b92075bac89f6c271611bfccccd140bfc8","unresolved":true,"context_lines":[{"line_number":125,"context_line":"Other end user impact"},{"line_number":126,"context_line":"---------------------"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"Aside from the API, are there other ways a user will interact with this"},{"line_number":129,"context_line":"feature?"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"* Does this change have an impact on python-cinderclient? What does the user"},{"line_number":132,"context_line":"  interface there look like?"}],"source_content_type":"text/x-rst","patch_set":2,"id":"24970868_95a02584","line":129,"range":{"start_line":128,"start_character":20,"end_line":129,"end_character":7},"updated":"2022-06-20 07:07:47.000000000","message":"not sure but can we use cinder-manage command for this case?","commit_id":"ccacd0c2e13326565674d4372b011179fb8169a4"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"037c57b92075bac89f6c271611bfccccd140bfc8","unresolved":true,"context_lines":[{"line_number":128,"context_line":"Aside from the API, are there other ways a user will interact with this"},{"line_number":129,"context_line":"feature?"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"* Does this change have an impact on python-cinderclient? What does the user"},{"line_number":132,"context_line":"  interface there look like?"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"Performance Impact"},{"line_number":135,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"c4d79b44_3e1a351d","line":132,"range":{"start_line":131,"start_character":2,"end_line":132,"end_character":28},"updated":"2022-06-20 07:07:47.000000000","message":"need to define the structure of command that operators are going to use to query this new API.","commit_id":"ccacd0c2e13326565674d4372b011179fb8169a4"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"037c57b92075bac89f6c271611bfccccd140bfc8","unresolved":true,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"Performance Impact"},{"line_number":135,"context_line":"------------------"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"Would need to be able to clean up the transactions table for completed"},{"line_number":138,"context_line":"transactions, or querying the db table might get slow over time."},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"Other deployer impact"},{"line_number":141,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"906878a2_25cfd195","line":138,"range":{"start_line":136,"start_character":0,"end_line":138,"end_character":64},"updated":"2022-06-20 07:07:47.000000000","message":"does updating the transaction table for every state change of any resource will cause performance impact as well?","commit_id":"ccacd0c2e13326565674d4372b011179fb8169a4"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"037c57b92075bac89f6c271611bfccccd140bfc8","unresolved":true,"context_lines":[{"line_number":147,"context_line":"Implementation"},{"line_number":148,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Assignee(s)"},{"line_number":151,"context_line":"-----------"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"Who is leading the writing of the code? Or is this a blueprint where you\u0027re"},{"line_number":154,"context_line":"throwing it out there to see who picks it up?"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"If more than one person is working on the implementation, please designate the"},{"line_number":157,"context_line":"primary author and contact."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"Primary assignee:"},{"line_number":160,"context_line":"  \u003claunchpad-id or None\u003e"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"Other contributors:"},{"line_number":163,"context_line":"  \u003claunchpad-id or None\u003e"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"Work Items"},{"line_number":166,"context_line":"----------"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"Work items or tasks -- break the feature up into the things that need to be"},{"line_number":169,"context_line":"done to implement it. Those parts might end up being done by different people,"},{"line_number":170,"context_line":"but we\u0027re mostly trying to understand the timeline for implementation."},{"line_number":171,"context_line":""},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"Dependencies"},{"line_number":174,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"* Include specific references to specs and/or blueprints in cinder, or in other"},{"line_number":177,"context_line":"  projects, that this one either depends on or is related to."},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"* If this requires functionality of another project that is not currently used"},{"line_number":180,"context_line":"  by Cinder (such as the glance v2 API when we previously only required v1),"},{"line_number":181,"context_line":"  document that fact."},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"* Does this feature require any new library dependencies or code otherwise not"},{"line_number":184,"context_line":"  included in OpenStack? Or does it depend on a specific version of library?"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"Testing"},{"line_number":188,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"Please discuss how the change will be tested. We especially want to know what"},{"line_number":191,"context_line":"tempest tests will be added. It is assumed that unit test coverage will be"},{"line_number":192,"context_line":"added so that doesn\u0027t need to be mentioned explicitly, but discussion of why"},{"line_number":193,"context_line":"you think unit tests are sufficient and we don\u0027t need to add more tempest"},{"line_number":194,"context_line":"tests would need to be included."},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"Is this untestable in gate given current limitations (specific hardware /"},{"line_number":197,"context_line":"software configurations available)? If so, are there mitigation plans (3rd"},{"line_number":198,"context_line":"party testing, gate enhancements, etc)."},{"line_number":199,"context_line":""},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"Documentation Impact"},{"line_number":202,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"What is the impact on the docs team of this change? Some changes might require"},{"line_number":205,"context_line":"donating resources to the docs team to have the documentation updated. Don\u0027t"},{"line_number":206,"context_line":"repeat details discussed above, but please reference them here."},{"line_number":207,"context_line":""},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"References"},{"line_number":210,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"Please add any useful references here. You are not required to have any"},{"line_number":213,"context_line":"reference. Moreover, this specification should still make sense when your"},{"line_number":214,"context_line":"references are unavailable. Examples of what you could include are:"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"* Links to mailing list or IRC discussions"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"* Links to notes from a summit session"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"* Links to relevant research, if appropriate"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"* Related specifications as appropriate (e.g. link to any vendor documentation)"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"* Anything else you feel it is worthwhile to refer to"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"To ensure that references do not cause duplicate label issues with other"},{"line_number":227,"context_line":"existing issues use the following example references [1]_ or"},{"line_number":228,"context_line":"`example reference`_."},{"line_number":229,"context_line":""},{"line_number":230,"context_line":".. [1] This is the first reference"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"_`example reference`: Second reference"}],"source_content_type":"text/x-rst","patch_set":2,"id":"736de28b_dcf4261b","line":232,"range":{"start_line":150,"start_character":0,"end_line":232,"end_character":38},"updated":"2022-06-20 07:07:47.000000000","message":"these sections should be updated","commit_id":"ccacd0c2e13326565674d4372b011179fb8169a4"}]}
