)]}'
{"doc/source/developing.rst":[{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"5b026c9a4d38b53cd61c775c97bb057d9a45c24a","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"Starting with Newton, keystone supports upgrading both with and without"},{"line_number":95,"context_line":"requiring downtime. In order to support this, there are three separate"},{"line_number":96,"context_line":"migration repositories (all under ``keystone/common/sql/`) that match the three"},{"line_number":97,"context_line":"phases of an upgrade (schema expansion, data migration and schema contraction):"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"``expand_repo`` - For additive schema modifications and triggers to ensure"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ac06dbe_fcac7b8d","line":96,"updated":"2016-08-23 19:33:21.000000000","message":"need another \u0027`\u0027 at the end","commit_id":"927df7a8441a9ae583dba40da63cab2e327ae706"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"f0b9cb9083a4249ac03fe15b961269d96280af92","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"Starting with Newton, keystone supports upgrading both with and without"},{"line_number":95,"context_line":"requiring downtime. In order to support this, there are three separate"},{"line_number":96,"context_line":"migration repositories (all under ``keystone/common/sql/`) that match the three"},{"line_number":97,"context_line":"phases of an upgrade (schema expansion, data migration and schema contraction):"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"``expand_repo`` - For additive schema modifications and triggers to ensure"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa7ab95a_7e821502","line":96,"in_reply_to":"1ac06dbe_1e730ab6","updated":"2016-08-26 09:56:28.000000000","message":"Done","commit_id":"927df7a8441a9ae583dba40da63cab2e327ae706"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"b9b1cdea146d032f4ad21810e1d1644fa3aa75d6","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"Starting with Newton, keystone supports upgrading both with and without"},{"line_number":95,"context_line":"requiring downtime. In order to support this, there are three separate"},{"line_number":96,"context_line":"migration repositories (all under ``keystone/common/sql/`) that match the three"},{"line_number":97,"context_line":"phases of an upgrade (schema expansion, data migration and schema contraction):"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"``expand_repo`` - For additive schema modifications and triggers to ensure"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ac06dbe_1e730ab6","line":96,"in_reply_to":"1ac06dbe_fcac7b8d","updated":"2016-08-24 17:29:32.000000000","message":"++","commit_id":"927df7a8441a9ae583dba40da63cab2e327ae706"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"5b026c9a4d38b53cd61c775c97bb057d9a45c24a","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    Since rolling upgrade support was added part way through the Newton cycle,"},{"line_number":117,"context_line":"    some migrations had already been added to the legacy repository"},{"line_number":118,"context_line":"    (``keystone/common/sql/migrate_repo`). This repository is now closed and no"},{"line_number":119,"context_line":"    new migrations should be added (except for backporting of previous"},{"line_number":120,"context_line":"    placeholders)."},{"line_number":121,"context_line":"    "}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ac06dbe_7ce6cbe8","line":118,"updated":"2016-08-23 19:33:21.000000000","message":"ditto","commit_id":"927df7a8441a9ae583dba40da63cab2e327ae706"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"f0b9cb9083a4249ac03fe15b961269d96280af92","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    Since rolling upgrade support was added part way through the Newton cycle,"},{"line_number":117,"context_line":"    some migrations had already been added to the legacy repository"},{"line_number":118,"context_line":"    (``keystone/common/sql/migrate_repo`). This repository is now closed and no"},{"line_number":119,"context_line":"    new migrations should be added (except for backporting of previous"},{"line_number":120,"context_line":"    placeholders)."},{"line_number":121,"context_line":"    "}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa7ab95a_9e87d90e","line":118,"in_reply_to":"1ac06dbe_7ce6cbe8","updated":"2016-08-26 09:56:28.000000000","message":"Done","commit_id":"927df7a8441a9ae583dba40da63cab2e327ae706"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"6540d619aa6f2dfacce1b68a5d0b2c35d0bfc74f","unresolved":false,"context_lines":[{"line_number":97,"context_line":"three phases of an upgrade (schema expansion, data migration and schema"},{"line_number":98,"context_line":"contraction):"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"``expand_repo`` - For additive schema modifications and triggers to ensure"},{"line_number":101,"context_line":"                  data is kept in sync between the old and new schema until"},{"line_number":102,"context_line":"                  the point when there are no old code versions running"},{"line_number":103,"context_line":"``data_migration_repo`` - To ensure new tables/columns are fully populated with"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa7ab95a_7b0e9c35","line":100,"updated":"2016-08-26 12:19:42.000000000","message":"Not sure I like the term \u0027versions\u0027 used throughout these definitions. I would prefer something more precises like \u0027keystone instances running old code\u0027, but I think that starts to get too verbose. {{{food for thought}}}","commit_id":"7da5593e5fbad36fd50d2808b9fa1102521847b3"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"7e7a435f45cba43ae164a9c6130e2a53f72cdd40","unresolved":false,"context_lines":[{"line_number":97,"context_line":"three phases of an upgrade (schema expansion, data migration and schema"},{"line_number":98,"context_line":"contraction):"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"``expand_repo`` - For additive schema modifications and triggers to ensure"},{"line_number":101,"context_line":"                  data is kept in sync between the old and new schema until"},{"line_number":102,"context_line":"                  the point when there are no old code versions running"},{"line_number":103,"context_line":"``data_migration_repo`` - To ensure new tables/columns are fully populated with"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa7ab95a_8ccd3d68","line":100,"in_reply_to":"fa7ab95a_7b0e9c35","updated":"2016-08-30 12:28:06.000000000","message":"Done","commit_id":"7da5593e5fbad36fd50d2808b9fa1102521847b3"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"fa02348af60514f1ab9099830016804d39105cbb","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"Any migration is required to have a migration script in each of these repos,"},{"line_number":111,"context_line":"each with the same version number (which is indicated by the first three"},{"line_number":112,"context_line":"digits of the name of the script, e.g. ``001_add_X_table.py`). If there is no"},{"line_number":113,"context_line":"work to do in a specific phase, then include a null migration."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":".. NOTE::"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa7ab95a_e73646e6","line":112,"range":{"start_line":112,"start_character":39,"end_line":112,"end_character":60},"updated":"2016-08-29 03:57:42.000000000","message":"missing a ` here at the end","commit_id":"7da5593e5fbad36fd50d2808b9fa1102521847b3"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"7e7a435f45cba43ae164a9c6130e2a53f72cdd40","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"Any migration is required to have a migration script in each of these repos,"},{"line_number":111,"context_line":"each with the same version number (which is indicated by the first three"},{"line_number":112,"context_line":"digits of the name of the script, e.g. ``001_add_X_table.py`). If there is no"},{"line_number":113,"context_line":"work to do in a specific phase, then include a null migration."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":".. NOTE::"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa7ab95a_ec99697a","line":112,"range":{"start_line":112,"start_character":39,"end_line":112,"end_character":60},"in_reply_to":"fa7ab95a_e73646e6","updated":"2016-08-30 12:28:06.000000000","message":"Done","commit_id":"7da5593e5fbad36fd50d2808b9fa1102521847b3"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"6540d619aa6f2dfacce1b68a5d0b2c35d0bfc74f","unresolved":false,"context_lines":[{"line_number":110,"context_line":"Any migration is required to have a migration script in each of these repos,"},{"line_number":111,"context_line":"each with the same version number (which is indicated by the first three"},{"line_number":112,"context_line":"digits of the name of the script, e.g. ``001_add_X_table.py`). If there is no"},{"line_number":113,"context_line":"work to do in a specific phase, then include a null migration."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":".. NOTE::"},{"line_number":116,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa7ab95a_e893c0f8","line":113,"updated":"2016-08-26 12:19:42.000000000","message":"Might be worth having a sample of a null migration or code to point to...","commit_id":"7da5593e5fbad36fd50d2808b9fa1102521847b3"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"7e7a435f45cba43ae164a9c6130e2a53f72cdd40","unresolved":false,"context_lines":[{"line_number":110,"context_line":"Any migration is required to have a migration script in each of these repos,"},{"line_number":111,"context_line":"each with the same version number (which is indicated by the first three"},{"line_number":112,"context_line":"digits of the name of the script, e.g. ``001_add_X_table.py`). If there is no"},{"line_number":113,"context_line":"work to do in a specific phase, then include a null migration."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":".. NOTE::"},{"line_number":116,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa7ab95a_6cad599a","line":113,"in_reply_to":"fa7ab95a_e893c0f8","updated":"2016-08-30 12:28:06.000000000","message":"Done","commit_id":"7da5593e5fbad36fd50d2808b9fa1102521847b3"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"6540d619aa6f2dfacce1b68a5d0b2c35d0bfc74f","unresolved":false,"context_lines":[{"line_number":129,"context_line":"restrictions as to what can and cannot be included in migration scripts in"},{"line_number":130,"context_line":"each phase:"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"  #. Expand phase: Only additive database changes (i.e. column, table and"},{"line_number":133,"context_line":"     indices and triggers adds). No insertion of data."},{"line_number":134,"context_line":"  #. Data Migration phase: No database changes - only insertion/copying of data"},{"line_number":135,"context_line":"  #. Contract phase: Only dropping or updating of schema (e.g. constraint changes)"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa7ab95a_fbe46c3c","line":132,"updated":"2016-08-26 12:19:42.000000000","message":"I would probably take the indentation out in front of the numbers. Right now it renders with a lot of space.","commit_id":"7da5593e5fbad36fd50d2808b9fa1102521847b3"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"fa02348af60514f1ab9099830016804d39105cbb","unresolved":false,"context_lines":[{"line_number":129,"context_line":"restrictions as to what can and cannot be included in migration scripts in"},{"line_number":130,"context_line":"each phase:"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"  #. Expand phase: Only additive database changes (i.e. column, table and"},{"line_number":133,"context_line":"     indices and triggers adds). No insertion of data."},{"line_number":134,"context_line":"  #. Data Migration phase: No database changes - only insertion/copying of data"},{"line_number":135,"context_line":"  #. Contract phase: Only dropping or updating of schema (e.g. constraint changes)"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa7ab95a_6703160e","line":132,"range":{"start_line":132,"start_character":70,"end_line":132,"end_character":73},"updated":"2016-08-29 03:57:42.000000000","message":"remove \"and\" here, replace with a comma","commit_id":"7da5593e5fbad36fd50d2808b9fa1102521847b3"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"7e7a435f45cba43ae164a9c6130e2a53f72cdd40","unresolved":false,"context_lines":[{"line_number":129,"context_line":"restrictions as to what can and cannot be included in migration scripts in"},{"line_number":130,"context_line":"each phase:"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"  #. Expand phase: Only additive database changes (i.e. column, table and"},{"line_number":133,"context_line":"     indices and triggers adds). No insertion of data."},{"line_number":134,"context_line":"  #. Data Migration phase: No database changes - only insertion/copying of data"},{"line_number":135,"context_line":"  #. Contract phase: Only dropping or updating of schema (e.g. constraint changes)"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa7ab95a_8c7ffd13","line":132,"range":{"start_line":132,"start_character":70,"end_line":132,"end_character":73},"in_reply_to":"fa7ab95a_6703160e","updated":"2016-08-30 12:28:06.000000000","message":"Done","commit_id":"7da5593e5fbad36fd50d2808b9fa1102521847b3"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"cb4e3af22d89d160ff61f68f42d053ec50ec3bc5","unresolved":false,"context_lines":[{"line_number":103,"context_line":"                  code."},{"line_number":104,"context_line":"``data_migration_repo`` - To ensure new tables/columns are fully populated with"},{"line_number":105,"context_line":"                          data from the old schema."},{"line_number":106,"context_line":"``contract_repo`` - Run after all old code versions have been upgraded to"},{"line_number":107,"context_line":"                    running the new code, so remove any old schema"},{"line_number":108,"context_line":"                    columns/tables that are not used by the new version of the"},{"line_number":109,"context_line":"                    code. Drop any triggers added in the expand phase."}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa7ab95a_343d332b","line":106,"updated":"2016-08-30 23:37:43.000000000","message":"\"old code versions\" makes it sound like there are multiple previous releases running, not just a \"previous release\"","commit_id":"4f40cc364bc9671fc8c24d570f07680b9414c5ee"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"cb4e3af22d89d160ff61f68f42d053ec50ec3bc5","unresolved":false,"context_lines":[{"line_number":111,"context_line":"Any migration is required to have a migration script in each of these repos,"},{"line_number":112,"context_line":"each with the same version number (which is indicated by the first three"},{"line_number":113,"context_line":"digits of the name of the script, e.g. ``003_add_X_table.py``). If there is no"},{"line_number":114,"context_line":"work to do in a specific phase, then include a null migration (in fact the"},{"line_number":115,"context_line":"first migration in each of these repositories is a null migration, so that"},{"line_number":116,"context_line":"can be used as a template)."},{"line_number":117,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa7ab95a_f40d8b8f","line":114,"updated":"2016-08-30 23:37:43.000000000","message":"s/null/no-op/","commit_id":"4f40cc364bc9671fc8c24d570f07680b9414c5ee"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"cb4e3af22d89d160ff61f68f42d053ec50ec3bc5","unresolved":false,"context_lines":[{"line_number":121,"context_line":"    some migrations had already been added to the legacy repository"},{"line_number":122,"context_line":"    (``keystone/common/sql/migrate_repo``). This repository is now closed and"},{"line_number":123,"context_line":"    no new migrations should be added (except for backporting of previous"},{"line_number":124,"context_line":"    placeholders)."},{"line_number":125,"context_line":"    "},{"line_number":126,"context_line":"Since migrations must now support upgrades without downtime, it is a"},{"line_number":127,"context_line":"requirement that keystone supports running a mixed-mode of the release"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa7ab95a_e5e5d0dc","line":124,"updated":"2016-08-30 23:37:43.000000000","message":"We should write a test for this! https://bugs.launchpad.net/keystone/+bug/1618653","commit_id":"4f40cc364bc9671fc8c24d570f07680b9414c5ee"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"cb4e3af22d89d160ff61f68f42d053ec50ec3bc5","unresolved":false,"context_lines":[{"line_number":137,"context_line":"Data Migration phase - No database changes - only insertion/copying of data"},{"line_number":138,"context_line":"Contract phase - Only dropping or updating of schema (e.g. constraint changes)."},{"line_number":139,"context_line":"                 No insertion/removal of data (other than that implicit in the"},{"line_number":140,"context_line":"                 dropping of tables/columns)."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"For examples of use of the 3 different migration phase scripts to allow upgrading"},{"line_number":143,"context_line":"without downtime, look at the existing migrations in each of the 3 repositories."}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa7ab95a_6548e0cd","line":140,"updated":"2016-08-30 23:37:43.000000000","message":"This doesn\u0027t render to HTML very well. It tries to make it a definition list, and the whitespace here messes it up.","commit_id":"4f40cc364bc9671fc8c24d570f07680b9414c5ee"}]}
