)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ad9d52d0deef81aa47ee2aeffec33d8a3d500213","unresolved":false,"context_lines":[{"line_number":13,"context_line":"In this specs, added a new microversion to disallow rotation parameter 0"},{"line_number":14,"context_line":"to \u0027createBackup\u0027 API. If user passes rotation parameter 0, it will"},{"line_number":15,"context_line":"return badRequest error."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Implements: bp skip-instance-backup-image-creation-for-rotation-0"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: I67e4f3190eaad57d0eee786939ae1def4e67abf7"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"bf659307_7b31490b","line":16,"updated":"2018-03-27 15:02:17.000000000","message":"Add the APIImpact tag to the commit message.","commit_id":"4de45feb86e9b8143c7d20385a342b818b3ce89e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a2fdf378b80948d9371f4becf00ec29610ec481f","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Presently, if user passes rotation parameter 0 to \u0027createBackup\u0027 API,"},{"line_number":10,"context_line":"it takes the server snapshot and deletes it immediately which is"},{"line_number":11,"context_line":"ridiculous."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"In this specs, added a new microversion to disallow rotation parameter 0"},{"line_number":14,"context_line":"to \u0027createBackup\u0027 API. If user passes rotation parameter 0, it will"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"bf659307_c9174851","line":11,"range":{"start_line":11,"start_character":0,"end_line":11,"end_character":10},"updated":"2018-03-28 16:53:34.000000000","message":"ha, how do you really feel about this?","commit_id":"c9ec33b2c3e1279e8dd1bdd6cbec414a204813ef"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a2fdf378b80948d9371f4becf00ec29610ec481f","unresolved":false,"context_lines":[{"line_number":13,"context_line":"In this specs, added a new microversion to disallow rotation parameter 0"},{"line_number":14,"context_line":"to \u0027createBackup\u0027 API. If user passes rotation parameter 0, it will"},{"line_number":15,"context_line":"return badRequest error."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Implements: bp skip-instance-backup-image-creation-for-rotation-0"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: I67e4f3190eaad57d0eee786939ae1def4e67abf7"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"bf659307_24b9492d","line":16,"updated":"2018-03-28 16:53:34.000000000","message":"Add the APIImpact tag to the commit message.","commit_id":"c9ec33b2c3e1279e8dd1bdd6cbec414a204813ef"}],"specs/queens/approved/skip_instance_backup_image_creation_when_rotation_0.rst":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"f0705e0ec55eb4058179375e7810b543924e3b72","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":2,"context_line":"Skip instance backup image creation when rotation 0"},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"df7087c5_db83cc03","line":1,"updated":"2018-03-09 03:13:53.000000000","message":"Missing license statement.\n\n  ..\n   This work is licensed under a Creative Commons Attribution 3.0 Unported\n   License.\n\n   http://creativecommons.org/licenses/by/3.0/legalcode","commit_id":"b2839f3e9ac74492c7dc49e12115257baeeeb9ed"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"f0705e0ec55eb4058179375e7810b543924e3b72","unresolved":false,"context_lines":[{"line_number":2,"context_line":"Skip instance backup image creation when rotation 0"},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"https://blueprints.launchpad.net/nova/+spec/skip-instance-backup-image-creation-for-rotation-0\u003e"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"The `createBackup` API creates the backup image when user passes rotation"},{"line_number":8,"context_line":"parameter value as 0 and deletes that backup image immediately."}],"source_content_type":"text/x-rst","patch_set":1,"id":"df7087c5_9b7d541e","line":5,"range":{"start_line":5,"start_character":94,"end_line":5,"end_character":95},"updated":"2018-03-09 03:13:53.000000000","message":"Remove it.","commit_id":"b2839f3e9ac74492c7dc49e12115257baeeeb9ed"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"f0705e0ec55eb4058179375e7810b543924e3b72","unresolved":false,"context_lines":[{"line_number":92,"context_line":"----------------"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"None"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"Implementation"},{"line_number":98,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"df7087c5_fbeb30ad","line":95,"updated":"2018-03-09 03:13:53.000000000","message":"Needs \u0027Upgrade impact\u0027 subsection.","commit_id":"b2839f3e9ac74492c7dc49e12115257baeeeb9ed"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"f0705e0ec55eb4058179375e7810b543924e3b72","unresolved":false,"context_lines":[{"line_number":147,"context_line":""},{"line_number":148,"context_line":"   * - Release Name"},{"line_number":149,"context_line":"     - Description"},{"line_number":150,"context_line":"   * - queens"},{"line_number":151,"context_line":"     - Introduced"},{"line_number":152,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"df7087c5_fbb6d0d9","line":150,"range":{"start_line":150,"start_character":7,"end_line":150,"end_character":13},"updated":"2018-03-09 03:13:53.000000000","message":"Rocky","commit_id":"b2839f3e9ac74492c7dc49e12115257baeeeb9ed"}],"specs/rocky/approved/skip-instance-backup-image-creation-for-rotation-0.rst":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2cf5f6a6e3401ccd036fb903f94ea569a9632f07","unresolved":false,"context_lines":[{"line_number":61,"context_line":"and it will not return `Location: \u003cimage location URL\u003e` as HTTP header and"},{"line_number":62,"context_line":"`image_id` in the response body but this will cause inconsistency in the API"},{"line_number":63,"context_line":"giving bad experience to the users."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Data model impact"},{"line_number":67,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf659307_b4548e54","line":64,"updated":"2018-03-29 14:06:39.000000000","message":"At least for posterity, we should record Alex\u0027s proposed alternative which is simply deprecate the createBackup API since it\u0027s just orchestration that nova performs but the end user could also do it with a script (snapshot the instance with some metadata, and cleanup the backups using a rotation value controlled client-side).","commit_id":"c90a89e0e9a8a88d2517435925ad6c599d1f85c1"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"ffb58e1c01173c18d88164ee5fbf929bb1031590","unresolved":false,"context_lines":[{"line_number":61,"context_line":"and it will not return `Location: \u003cimage location URL\u003e` as HTTP header and"},{"line_number":62,"context_line":"`image_id` in the response body but this will cause inconsistency in the API"},{"line_number":63,"context_line":"giving bad experience to the users."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Data model impact"},{"line_number":67,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf659307_f5b51d7f","line":64,"in_reply_to":"bf659307_b4548e54","updated":"2018-03-29 17:32:30.000000000","message":"Yeah, I think it\u0027s worth documenting in here that deprecating the createBackup API is one way of \"solving\" this, though it does feel a bit weird.\n\nIt sounds like the orchestration bit is something openstackclient could be enhanced to do, similar to the purge [0] command? I feel like deprecating the createBackup API should go hand-in-hand with someone signing up to implement backup/purge in openstackclient (assuming that\u0027s possible).\n\nThat said, I\u0027m not opposed to adding a microversion and disallowing 0 for createBackup and adding deleteBackups (which is functionally almost already existing except for the REST API plumbing, IIUC). It would be less work to fix the rotation\u003d0 weirdness here rather than implementing new things in openstackclient.\n\n[0] https://docs.openstack.org/python-openstackclient/queens/cli/command-objects/project-purge.html","commit_id":"c90a89e0e9a8a88d2517435925ad6c599d1f85c1"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"c1c005f7407f85ec2d4a4cdd6536df45d583d8e2","unresolved":false,"context_lines":[{"line_number":61,"context_line":"and it will not return `Location: \u003cimage location URL\u003e` as HTTP header and"},{"line_number":62,"context_line":"`image_id` in the response body but this will cause inconsistency in the API"},{"line_number":63,"context_line":"giving bad experience to the users."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Data model impact"},{"line_number":67,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf659307_4e00f001","line":64,"in_reply_to":"bf659307_f5b51d7f","updated":"2018-03-30 06:26:26.000000000","message":"+1, I somehow tends towards deprecating the API as i always get confused between createBackup and createImage APIs in case of server snapshot scenario. Even while reviewing the tempest tests also.\n\nAlso irrespective of its usage and how many people want, i feel we should still deprecate this as this is proxy and wrapper APIs.","commit_id":"c90a89e0e9a8a88d2517435925ad6c599d1f85c1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2cf5f6a6e3401ccd036fb903f94ea569a9632f07","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"   * Normal Response Code:"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        * 202"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"   * Error Response Codes:"},{"line_number":96,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf659307_34ce3e2e","line":93,"updated":"2018-03-29 14:06:39.000000000","message":"nit: reduce the indent by one tab, see:\n\nhttp://logs.openstack.org/25/511825/5/check/build-openstack-sphinx-docs/4fbc8d2/html/specs/rocky/approved/skip-instance-backup-image-creation-for-rotation-0.html#rest-api-impact","commit_id":"c90a89e0e9a8a88d2517435925ad6c599d1f85c1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2cf5f6a6e3401ccd036fb903f94ea569a9632f07","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"   * Error Response Codes:"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        * badRequest (400)"},{"line_number":98,"context_line":"        * forbidden (403)"},{"line_number":99,"context_line":"        * itemNotFound (404)"},{"line_number":100,"context_line":"        * conflict (409)"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf659307_d4cee22b","line":97,"updated":"2018-03-29 14:06:39.000000000","message":"same about the indent","commit_id":"c90a89e0e9a8a88d2517435925ad6c599d1f85c1"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"1da7034c3e9cc85c6482fea2e8fe41fa7b082043","unresolved":false,"context_lines":[{"line_number":24,"context_line":"first creates a image, takes the server snapshot, upload the server snapshot"},{"line_number":25,"context_line":"image to the glance service and finally it deletes all backed images of that"},{"line_number":26,"context_line":"particular server including the latest backed image [1]_. If the end result is"},{"line_number":27,"context_line":"deletion of newly created backed image, then there is no point of consuming"},{"line_number":28,"context_line":"time and resources to take the server snapshot and uploading it to the glance"},{"line_number":29,"context_line":"service."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"Use Cases"},{"line_number":32,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_814eb5be","line":29,"range":{"start_line":27,"start_character":45,"end_line":29,"end_character":8},"updated":"2018-04-02 20:35:04.000000000","message":"A nice point.","commit_id":"b2e119638bdde351ed40f83ce259e9da3cf47f82"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"1da7034c3e9cc85c6482fea2e8fe41fa7b082043","unresolved":false,"context_lines":[{"line_number":31,"context_line":"Use Cases"},{"line_number":32,"context_line":"---------"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"There is no API available to delete batches of server backup without taking a"},{"line_number":35,"context_line":"new server backup. No need to take server backup in case user passes rotation"},{"line_number":36,"context_line":"parameter is 0 to the `createBackup` server action API."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_a1de59d7","line":35,"range":{"start_line":34,"start_character":0,"end_line":35,"end_character":17},"updated":"2018-04-02 20:35:04.000000000","message":"Is it a problem if we remove server backup images on Glance API instead?","commit_id":"b2e119638bdde351ed40f83ce259e9da3cf47f82"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"48e82e73a12feb1a1cea1b9b86eabafeaae8212b","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"There is no API available to delete batches of server backup without taking a"},{"line_number":35,"context_line":"new server backup. No need to take server backup in case user passes rotation"},{"line_number":36,"context_line":"parameter is 0 to the `createBackup` server action API."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Proposed change"},{"line_number":39,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_4702a340","line":36,"updated":"2018-04-05 15:41:02.000000000","message":"I\u0027ve written to the openstack-operators ML about this [0] and I\u0027m wondering, since this use case isn\u0027t mentioning any users, can you confirm: do you have users actively using the createBackup API?\n\n[0] http://lists.openstack.org/pipermail/openstack-operators/2018-April/015092.html","commit_id":"b2e119638bdde351ed40f83ce259e9da3cf47f82"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"824094104572926e17f24b5506b0db0835ae4d58","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"There is no API available to delete batches of server backup without taking a"},{"line_number":35,"context_line":"new server backup. No need to take server backup in case user passes rotation"},{"line_number":36,"context_line":"parameter is 0 to the `createBackup` server action API."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Proposed change"},{"line_number":39,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9f6a8fd7_1362563f","line":36,"in_reply_to":"bf659307_4702a340","updated":"2018-05-02 17:56:31.000000000","message":"No one responded to the ML thread about the createBackup API and so far no one else has mentioned that they have users calling the createBackup API.\n\nI only want to go forward with this work (as it requires review bandwidth in addition) if it there are users that will benefit from it. I\u0027m -1 until someone says they have users that call the createBackup API and would benefit from this proposed API change.","commit_id":"b2e119638bdde351ed40f83ce259e9da3cf47f82"}],"specs/rocky/approved/skip_instance_backup_image_creation_when_rotation_0.rst":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a896ea94797de527b8fbdc78a30defa059297539","unresolved":false,"context_lines":[{"line_number":8,"context_line":"Disallow rotation parameter 0 and add a new server action API `deleteBackups`"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/skip-instance-backup-image-creation-for-rotation-0\u003e"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The `createBackup` API creates the backup image when user passes rotation"},{"line_number":14,"context_line":"parameter value as 0 and deletes that backed up image immediately."}],"source_content_type":"text/x-rst","patch_set":2,"id":"bf659307_7bd2a95e","line":11,"range":{"start_line":11,"start_character":94,"end_line":11,"end_character":95},"updated":"2018-03-27 15:00:46.000000000","message":"Remove this \u003e.","commit_id":"4de45feb86e9b8143c7d20385a342b818b3ce89e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a896ea94797de527b8fbdc78a30defa059297539","unresolved":false,"context_lines":[{"line_number":8,"context_line":"Disallow rotation parameter 0 and add a new server action API `deleteBackups`"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/skip-instance-backup-image-creation-for-rotation-0\u003e"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The `createBackup` API creates the backup image when user passes rotation"},{"line_number":14,"context_line":"parameter value as 0 and deletes that backed up image immediately."}],"source_content_type":"text/x-rst","patch_set":2,"id":"bf659307_9bd53d46","line":11,"range":{"start_line":11,"start_character":44,"end_line":11,"end_character":91},"updated":"2018-03-27 15:00:46.000000000","message":"The spec filename needs to match this, so skip-instance-backup-image-creation-for-rotation-0.rst.","commit_id":"4de45feb86e9b8143c7d20385a342b818b3ce89e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a896ea94797de527b8fbdc78a30defa059297539","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"The `createBackup` server action API accepts rotation parameter 0 in which it"},{"line_number":24,"context_line":"first creates a image, takes the server snapshot, upload the server snapshot"},{"line_number":25,"context_line":"image to the glance service and finally it deletes all backed images of that"},{"line_number":26,"context_line":"particular server including the latest backed image. If the end result is"},{"line_number":27,"context_line":"deletion of newly created backed image, then there is no point of consuming"},{"line_number":28,"context_line":"time and resources to take the server snapshot and uploading it to the glance"},{"line_number":29,"context_line":"service."}],"source_content_type":"text/x-rst","patch_set":2,"id":"bf659307_3b0f51e2","line":26,"range":{"start_line":25,"start_character":28,"end_line":26,"end_character":52},"updated":"2018-03-27 15:00:46.000000000","message":"It would be useful to link to this code which has the logic that deletes all of the backups, including the one just created:\n\nhttps://github.com/openstack/nova/blob/88f6c3b7b892f2a05066ac6f0e3353f4ce80f6b0/nova/compute/manager.py#L3439\n\nSince num_images is always going to be greater than 0 in this case.","commit_id":"4de45feb86e9b8143c7d20385a342b818b3ce89e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a896ea94797de527b8fbdc78a30defa059297539","unresolved":false,"context_lines":[{"line_number":43,"context_line":"server backups as per user requirements."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"This new `deleteBackups` server action API will delete all backups of a given"},{"line_number":46,"context_line":"server. We will add a new task_state `IMAGE_CLEANUP` and set it in the API"},{"line_number":47,"context_line":"layer to indicate certain actions are being performed on the server so that"},{"line_number":48,"context_line":"`createBackup` API should fail with 409 error if it\u0027s task_state is not None."},{"line_number":49,"context_line":"Also, we will add a new compute rpc API to run `deleteBackups` server action on"},{"line_number":50,"context_line":"the compute node. The deletion of backup images of a server can be done on the"},{"line_number":51,"context_line":"controller node without routing the rpc call to the compute node but there"}],"source_content_type":"text/x-rst","patch_set":2,"id":"bf659307_3bdd1142","line":48,"range":{"start_line":46,"start_character":8,"end_line":48,"end_character":77},"updated":"2018-03-27 15:00:46.000000000","message":"Do we really need a new task_state? We aren\u0027t actually performing any operations on the instance itself, or changing its running state, we\u0027re just doing cleanup in the image service, like orchestration really.\n\nI guess the point is you don\u0027t want someone concurrently trying to create a new backup while purging old backups, right?","commit_id":"4de45feb86e9b8143c7d20385a342b818b3ce89e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a896ea94797de527b8fbdc78a30defa059297539","unresolved":false,"context_lines":[{"line_number":47,"context_line":"layer to indicate certain actions are being performed on the server so that"},{"line_number":48,"context_line":"`createBackup` API should fail with 409 error if it\u0027s task_state is not None."},{"line_number":49,"context_line":"Also, we will add a new compute rpc API to run `deleteBackups` server action on"},{"line_number":50,"context_line":"the compute node. The deletion of backup images of a server can be done on the"},{"line_number":51,"context_line":"controller node without routing the rpc call to the compute node but there"},{"line_number":52,"context_line":"will be a race condition during checking of expected_task_state in the API"},{"line_number":53,"context_line":"layer which cause both APIs `createBackup` and `deleteBackups` run"},{"line_number":54,"context_line":"simultaneously leading to unexpected results as no lock is acquired by the"},{"line_number":55,"context_line":"`createBackup` API."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"We can delete backup images of a server in compute API side itself without"},{"line_number":58,"context_line":"compute rpc call, but in that case we will need to acquire instance lock in"}],"source_content_type":"text/x-rst","patch_set":2,"id":"bf659307_db72d549","line":55,"range":{"start_line":50,"start_character":18,"end_line":55,"end_character":19},"updated":"2018-03-27 15:00:46.000000000","message":"I\u0027m confused here. createBackup sets the task_state on the instance to IMAGE_BACKUP, and the instance update in the DB should be atomic.\n\nhttps://github.com/openstack/nova/blob/88f6c3b7b892f2a05066ac6f0e3353f4ce80f6b0/nova/compute/api.py#L2702\n\nSo if you also set a task_state in the deleteBackups compute API method, it should be locked down in the DB layer, and we shouldn\u0027t have to RPC cast to compute to cleanup images.","commit_id":"4de45feb86e9b8143c7d20385a342b818b3ce89e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a896ea94797de527b8fbdc78a30defa059297539","unresolved":false,"context_lines":[{"line_number":54,"context_line":"simultaneously leading to unexpected results as no lock is acquired by the"},{"line_number":55,"context_line":"`createBackup` API."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"We can delete backup images of a server in compute API side itself without"},{"line_number":58,"context_line":"compute rpc call, but in that case we will need to acquire instance lock in"},{"line_number":59,"context_line":"both backup and the newly introduced delete_backup methods to avoid race"},{"line_number":60,"context_line":"condition between these two APIs."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"For `deleteBackups` API, instance action will be recorded. START action will"},{"line_number":63,"context_line":"be recorded in the compute API just before making a compute rpc call and"}],"source_content_type":"text/x-rst","patch_set":2,"id":"bf659307_dbc0952d","line":60,"range":{"start_line":57,"start_character":0,"end_line":60,"end_character":33},"updated":"2018-03-27 15:00:46.000000000","message":"What kind of lock are you referring to here? As explained above, the instance.save() with the expected_task_state should handle this in the instance update call in the DB API, and if we\u0027re hitting both APIs concurrently, one should fail with UnexpectedTaskStateError which the API would handle and return a 409 to the user.","commit_id":"4de45feb86e9b8143c7d20385a342b818b3ce89e"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"013522ebda0a004a7106eafc4732ea8eab79e7c9","unresolved":false,"context_lines":[{"line_number":54,"context_line":"simultaneously leading to unexpected results as no lock is acquired by the"},{"line_number":55,"context_line":"`createBackup` API."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"We can delete backup images of a server in compute API side itself without"},{"line_number":58,"context_line":"compute rpc call, but in that case we will need to acquire instance lock in"},{"line_number":59,"context_line":"both backup and the newly introduced delete_backup methods to avoid race"},{"line_number":60,"context_line":"condition between these two APIs."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"For `deleteBackups` API, instance action will be recorded. START action will"},{"line_number":63,"context_line":"be recorded in the compute API just before making a compute rpc call and"}],"source_content_type":"text/x-rst","patch_set":2,"id":"bf659307_829f025e","line":60,"range":{"start_line":57,"start_character":0,"end_line":60,"end_character":33},"in_reply_to":"bf659307_dbc0952d","updated":"2018-03-27 22:53:13.000000000","message":"To be clear, what Matt is describing here is to add try-except in the createBackup and deleteBackups APIs where if UnexpectedTaskStateError is caught, raise a 409 HTTP exception for the end user. (That is assuming we add the new \u0027IMAGE_CLEANUP\u0027 task_state you described on L46, the instance.save() + expected_task_state should take care of concurrent requests).","commit_id":"4de45feb86e9b8143c7d20385a342b818b3ce89e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a896ea94797de527b8fbdc78a30defa059297539","unresolved":false,"context_lines":[{"line_number":68,"context_line":"Alternatives"},{"line_number":69,"context_line":"------------"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"We can add a new microversion to skip server backup image creation when user"},{"line_number":72,"context_line":"passes rotation parameter value as 0 to the `createBackup` server action API"},{"line_number":73,"context_line":"and it will not return `Location: \u003cimage location URL\u003e` as HTTP header and"},{"line_number":74,"context_line":"`image_id` in the response body."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"Data model impact"}],"source_content_type":"text/x-rst","patch_set":2,"id":"bf659307_dbd5f5e6","line":74,"range":{"start_line":71,"start_character":0,"end_line":74,"end_character":32},"updated":"2018-03-27 15:00:46.000000000","message":"Please explain why this alternative is a poor choice compared to the proposed change, i.e. it sounds like a bad user experience.","commit_id":"4de45feb86e9b8143c7d20385a342b818b3ce89e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a896ea94797de527b8fbdc78a30defa059297539","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        }"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"   * JSON schema definition for the body data: N/A"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"   * Response: There is no body content for the response of a successful"},{"line_number":121,"context_line":"     DELETE action."}],"source_content_type":"text/x-rst","patch_set":2,"id":"bf659307_3b83d1ce","line":118,"updated":"2018-03-27 15:00:46.000000000","message":"Well, we\u0027d require that deleteBackups is specific (it\u0027s required in the body), but we don\u0027t need anything for the value. We likely have examples of similar action APIs like this.","commit_id":"4de45feb86e9b8143c7d20385a342b818b3ce89e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a896ea94797de527b8fbdc78a30defa059297539","unresolved":false,"context_lines":[{"line_number":118,"context_line":"   * JSON schema definition for the body data: N/A"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"   * Response: There is no body content for the response of a successful"},{"line_number":121,"context_line":"     DELETE action."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"Security impact"},{"line_number":124,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"bf659307_3b5c317d","line":121,"range":{"start_line":121,"start_character":5,"end_line":121,"end_character":11},"updated":"2018-03-27 15:00:46.000000000","message":"This isn\u0027t a DELETE, it\u0027s a POST.","commit_id":"4de45feb86e9b8143c7d20385a342b818b3ce89e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a896ea94797de527b8fbdc78a30defa059297539","unresolved":false,"context_lines":[{"line_number":145,"context_line":"Performance Impact"},{"line_number":146,"context_line":"------------------"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"Locks are acquired during `createBackup` API, similarly for `deleteBackups` API"},{"line_number":149,"context_line":"need to acquire lock so users won\u0027t be able to take backup when `deleteBackups`"},{"line_number":150,"context_line":"is in progress."},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"Other deployer impact"},{"line_number":153,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"bf659307_3bd191ce","line":150,"range":{"start_line":148,"start_character":0,"end_line":150,"end_character":15},"updated":"2018-03-27 15:00:46.000000000","message":"I\u0027m still confused on the locks being proposed here, please explain above.","commit_id":"4de45feb86e9b8143c7d20385a342b818b3ce89e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a896ea94797de527b8fbdc78a30defa059297539","unresolved":false,"context_lines":[{"line_number":152,"context_line":"Other deployer impact"},{"line_number":153,"context_line":"---------------------"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"Same policies will be applicable for `deleteBackups` as of `createBackup`."},{"line_number":156,"context_line":"These are server action APIs, policy applicable is `rule:admin_or_owner`"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"Developer impact"}],"source_content_type":"text/x-rst","patch_set":2,"id":"bf659307_3beaf174","line":155,"updated":"2018-03-27 15:00:46.000000000","message":"We\u0027d add a new rule though, we wouldn\u0027t re-use os_compute_api:os-create-backup, so we\u0027d add something like os_compute_api:os-delete-backups.","commit_id":"4de45feb86e9b8143c7d20385a342b818b3ce89e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a896ea94797de527b8fbdc78a30defa059297539","unresolved":false,"context_lines":[{"line_number":178,"context_line":"Work Items"},{"line_number":179,"context_line":"----------"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"* Add a new microversion for `deleteBackups` to disallow rotation parameter"},{"line_number":182,"context_line":"  value as 0"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"* Add unit tests to check the new microversion changes."}],"source_content_type":"text/x-rst","patch_set":2,"id":"bf659307_dbf8954a","line":181,"range":{"start_line":181,"start_character":30,"end_line":181,"end_character":43},"updated":"2018-03-27 15:00:46.000000000","message":"createBackup? You\u0027re munging the two different API changes here.","commit_id":"4de45feb86e9b8143c7d20385a342b818b3ce89e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a896ea94797de527b8fbdc78a30defa059297539","unresolved":false,"context_lines":[{"line_number":193,"context_line":"* Add validation for not to `deleteBackups` of instance for which"},{"line_number":194,"context_line":"  `createBackup` is in progress."},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"* Add tempest test for addition of new server action API `deleteBackups`."},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"* Add CLI for addition of `deleteBackups` API at nova client side."},{"line_number":199,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"bf659307_fb88f9c6","line":196,"updated":"2018-03-27 15:00:46.000000000","message":"We likely don\u0027t need a tempest test for this and can just test it with in-tree functional tests using our image service fixture.","commit_id":"4de45feb86e9b8143c7d20385a342b818b3ce89e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a896ea94797de527b8fbdc78a30defa059297539","unresolved":false,"context_lines":[{"line_number":195,"context_line":""},{"line_number":196,"context_line":"* Add tempest test for addition of new server action API `deleteBackups`."},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"* Add CLI for addition of `deleteBackups` API at nova client side."},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"* Modify and add REST API documentation for `createBackup` and"},{"line_number":201,"context_line":"  `deleteBackups` APIs respectively."}],"source_content_type":"text/x-rst","patch_set":2,"id":"bf659307_9bc1bde7","line":198,"updated":"2018-03-27 15:00:46.000000000","message":"python-openstackclient should also be mentioned. I\u0027m on the fence about adding a new CLI to novaclient when we should be moving more of the CLI functionality over to openstackclient long-term.","commit_id":"4de45feb86e9b8143c7d20385a342b818b3ce89e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a896ea94797de527b8fbdc78a30defa059297539","unresolved":false,"context_lines":[{"line_number":235,"context_line":""},{"line_number":236,"context_line":"   * - Release Name"},{"line_number":237,"context_line":"     - Description"},{"line_number":238,"context_line":"   * - rocky"},{"line_number":239,"context_line":"     - Introduced"},{"line_number":240,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"bf659307_1b728de4","line":238,"range":{"start_line":238,"start_character":7,"end_line":238,"end_character":12},"updated":"2018-03-27 15:00:46.000000000","message":"Rocky","commit_id":"4de45feb86e9b8143c7d20385a342b818b3ce89e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a2fdf378b80948d9371f4becf00ec29610ec481f","unresolved":false,"context_lines":[{"line_number":8,"context_line":"Disallow rotation parameter 0 and add a new server action API `deleteBackups`"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/skip-instance-backup-image-creation-for-rotation-0"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The `createBackup` API creates the backup image when user passes rotation"},{"line_number":14,"context_line":"parameter value as 0 and deletes that backed up image immediately."}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_6498a1bf","line":11,"updated":"2018-03-28 16:53:34.000000000","message":"You still need to rename the spec filename to match the blueprint name, so literally change the underscores in the filename to dashes:\n\nspecs/rocky/approved/skip-instance-backup-image-creation-for-rotation-0.rst","commit_id":"c9ec33b2c3e1279e8dd1bdd6cbec414a204813ef"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a2fdf378b80948d9371f4becf00ec29610ec481f","unresolved":false,"context_lines":[{"line_number":23,"context_line":"The `createBackup` server action API accepts rotation parameter 0 in which it"},{"line_number":24,"context_line":"first creates a image, takes the server snapshot, upload the server snapshot"},{"line_number":25,"context_line":"image to the glance service and finally it deletes all backed images of that"},{"line_number":26,"context_line":"particular server including the latest backed image `[1]`_. If the end result"},{"line_number":27,"context_line":"is deletion of newly created backed image, then there is no point of"},{"line_number":28,"context_line":"consuming time and resources to take the server snapshot and uploading"},{"line_number":29,"context_line":"it to the glance service."}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_44e23d31","line":26,"range":{"start_line":26,"start_character":52,"end_line":26,"end_character":58},"updated":"2018-03-28 16:53:34.000000000","message":"nit: you can just make this a footnote:\n\n[1]_ here\n\nand then below:\n\n.. [1]: ...","commit_id":"c9ec33b2c3e1279e8dd1bdd6cbec414a204813ef"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a2fdf378b80948d9371f4becf00ec29610ec481f","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"We propose to add a new microversion for `createBackup` server action API to"},{"line_number":42,"context_line":"disallow `rotation` parameter as 0 and add a new API `deleteBackups` to purge"},{"line_number":43,"context_line":"server backups as per user requirements as discussed during Dublin PTG `[2]`_."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"This new `deleteBackups` server action API will delete all backups of a given"},{"line_number":46,"context_line":"server in compute API side. We will add a new task_state `IMAGE_CLEANUP` and"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_04d68550","line":43,"range":{"start_line":43,"start_character":71,"end_line":43,"end_character":77},"updated":"2018-03-28 16:53:34.000000000","message":"same","commit_id":"c9ec33b2c3e1279e8dd1bdd6cbec414a204813ef"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a2fdf378b80948d9371f4becf00ec29610ec481f","unresolved":false,"context_lines":[{"line_number":45,"context_line":"This new `deleteBackups` server action API will delete all backups of a given"},{"line_number":46,"context_line":"server in compute API side. We will add a new task_state `IMAGE_CLEANUP` and"},{"line_number":47,"context_line":"set it in the API layer before actually deleting backed up images so that it"},{"line_number":48,"context_line":"doesn\u0027t allow other actions to be performed on the server especially we don\u0027t"},{"line_number":49,"context_line":"want someone is trying to concurrently take a backup while purging old"},{"line_number":50,"context_line":"backups. In such cases, it will fail with 409 error."},{"line_number":51,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_44bb1d0d","line":48,"range":{"start_line":48,"start_character":58,"end_line":48,"end_character":68},"updated":"2018-03-28 16:53:34.000000000","message":"especially because we don\u0027t...","commit_id":"c9ec33b2c3e1279e8dd1bdd6cbec414a204813ef"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a2fdf378b80948d9371f4becf00ec29610ec481f","unresolved":false,"context_lines":[{"line_number":46,"context_line":"server in compute API side. We will add a new task_state `IMAGE_CLEANUP` and"},{"line_number":47,"context_line":"set it in the API layer before actually deleting backed up images so that it"},{"line_number":48,"context_line":"doesn\u0027t allow other actions to be performed on the server especially we don\u0027t"},{"line_number":49,"context_line":"want someone is trying to concurrently take a backup while purging old"},{"line_number":50,"context_line":"backups. In such cases, it will fail with 409 error."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"For `deleteBackups` API, instance action will be recorded. START action will"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_a441d90d","line":49,"range":{"start_line":49,"start_character":13,"end_line":49,"end_character":22},"updated":"2018-03-28 16:53:34.000000000","message":"Just \"trying\" here.","commit_id":"c9ec33b2c3e1279e8dd1bdd6cbec414a204813ef"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a2fdf378b80948d9371f4becf00ec29610ec481f","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        * When the result is successful, no response body is returned."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        * When an error occurs, the response data includes the error"},{"line_number":118,"context_line":"          message `[3]`_."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"Security impact"},{"line_number":121,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_c45dede9","line":118,"range":{"start_line":118,"start_character":18,"end_line":118,"end_character":24},"updated":"2018-03-28 16:53:34.000000000","message":"same as above","commit_id":"c9ec33b2c3e1279e8dd1bdd6cbec414a204813ef"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a2fdf378b80948d9371f4becf00ec29610ec481f","unresolved":false,"context_lines":[{"line_number":125,"context_line":"Notifications impact"},{"line_number":126,"context_line":"--------------------"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"None"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"Other end user impact"},{"line_number":131,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf659307_846ff590","line":128,"updated":"2018-03-28 16:53:34.000000000","message":"Looking at the compute manager code, we don\u0027t send any specific notifications for the createBackup action. There will be a snapshot notification, but that\u0027s not really the same.\n\nAnyway, if we don\u0027t need to RPC cast to the compute then we probably don\u0027t need notifications for this anyway.","commit_id":"c9ec33b2c3e1279e8dd1bdd6cbec414a204813ef"}]}
