)]}'
{"specs/juno/db-migration-refactoring.rst":[{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"676172db860c7054ecaf56b8597391475513bdbf","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Launchpad blueprint:"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"https://blueprints.launchpad.net/neutron/+spec/db-sync-models-with-migrations"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Blueprint proposes consistent database scheme without dependency on used"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3ae8d1ca_6ed03154","line":13,"updated":"2014-05-27 12:11:07.000000000","message":"This bp is not proposed db sheme without dependency on plugins. It\u0027s topic is sync models with migrations.","commit_id":"3cc472e325396a02b9e10fdd6919307e5bef3116"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"change_message_id":"b5e2afcc8afb5fc0d19749337b4b3edb96aef8b6","unresolved":false,"context_lines":[{"line_number":13,"context_line":"https://blueprints.launchpad.net/neutron/+spec/db-sync-models-with-migrations"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Blueprint proposes consistent database scheme without dependency on used"},{"line_number":17,"context_line":"plugins."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Conditional migration brings a lot of problems, e.g. no possibility of adding"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3ae8d1ca_f873034b","line":16,"updated":"2014-05-28 07:28:01.000000000","message":"s/scheme/schema/","commit_id":"3cc472e325396a02b9e10fdd6919307e5bef3116"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"change_message_id":"b5e2afcc8afb5fc0d19749337b4b3edb96aef8b6","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Conditional migration brings a lot of problems, e.g. no possibility of adding"},{"line_number":20,"context_line":"new plugin to already created environment. Idea of this blueprint is to make a"},{"line_number":21,"context_line":"single point in timeline where all tables are created and database scheme is"},{"line_number":22,"context_line":"the same no matter which plugins are used."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3ae8d1ca_58b5d7ec","line":21,"updated":"2014-05-28 07:28:01.000000000","message":"schema","commit_id":"3cc472e325396a02b9e10fdd6919307e5bef3116"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"change_message_id":"b5e2afcc8afb5fc0d19749337b4b3edb96aef8b6","unresolved":false,"context_lines":[{"line_number":26,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Database scheme is different based on used core and service plugins. Also there"},{"line_number":29,"context_line":"are missing steps in migrations that corresponds with defined models. Part of"},{"line_number":30,"context_line":"this blueprint will be healing script that will call needed DDLs in order to"},{"line_number":31,"context_line":"achieve database scheme containing all tables matching database models. Also"},{"line_number":32,"context_line":"a new timeline will be introduced starting with Icehouse release. Healing"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3ae8d1ca_18b7cfd9","line":29,"updated":"2014-05-28 07:28:01.000000000","message":"Could you elaborate on what are the \"missing steps\"?","commit_id":"3cc472e325396a02b9e10fdd6919307e5bef3116"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"change_message_id":"b5e2afcc8afb5fc0d19749337b4b3edb96aef8b6","unresolved":false,"context_lines":[{"line_number":28,"context_line":"Database scheme is different based on used core and service plugins. Also there"},{"line_number":29,"context_line":"are missing steps in migrations that corresponds with defined models. Part of"},{"line_number":30,"context_line":"this blueprint will be healing script that will call needed DDLs in order to"},{"line_number":31,"context_line":"achieve database scheme containing all tables matching database models. Also"},{"line_number":32,"context_line":"a new timeline will be introduced starting with Icehouse release. Healing"},{"line_number":33,"context_line":"script will also transfer to new timeline when upgrading from \u003c Havana to new"},{"line_number":34,"context_line":"timeline."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3ae8d1ca_38bc8bbb","line":31,"updated":"2014-05-28 07:28:01.000000000","message":"schema","commit_id":"3cc472e325396a02b9e10fdd6919307e5bef3116"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"change_message_id":"b5e2afcc8afb5fc0d19749337b4b3edb96aef8b6","unresolved":false,"context_lines":[{"line_number":40,"context_line":"Blueprint could be separated into several actions."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"1) Investigation of models and current migrations in order to get desired"},{"line_number":43,"context_line":"   database scheme."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"2) Healing script assuring same database scheme in Icehouse release"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3ae8d1ca_98caff4d","line":43,"updated":"2014-05-28 07:28:01.000000000","message":"schema","commit_id":"3cc472e325396a02b9e10fdd6919307e5bef3116"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"change_message_id":"b5e2afcc8afb5fc0d19749337b4b3edb96aef8b6","unresolved":false,"context_lines":[{"line_number":42,"context_line":"1) Investigation of models and current migrations in order to get desired"},{"line_number":43,"context_line":"   database scheme."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"2) Healing script assuring same database scheme in Icehouse release"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"3) New timeline without conditional migrations"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3ae8d1ca_f8c1432f","line":45,"updated":"2014-05-28 07:28:01.000000000","message":"schema","commit_id":"3cc472e325396a02b9e10fdd6919307e5bef3116"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"change_message_id":"b5e2afcc8afb5fc0d19749337b4b3edb96aef8b6","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"New cli argument for neutron-db-manage is proposed: \"--heal\" that would change"},{"line_number":51,"context_line":"dynamically database scheme into point where all tables are present."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3ae8d1ca_98d11ffe","line":51,"updated":"2014-05-28 07:28:01.000000000","message":"schema","commit_id":"3cc472e325396a02b9e10fdd6919307e5bef3116"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"49cfe8bdf646a491aceeee6e2f150a3256db4ee6","unresolved":false,"context_lines":[{"line_number":89,"context_line":"Other deployer impact"},{"line_number":90,"context_line":"---------------------"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Deploying from Juno will have new timeline starting in Icehouse."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"Developer impact"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3ae8d1ca_ca6e5401","line":92,"updated":"2014-05-28 19:47:21.000000000","message":"Maybe a mention here of how this will affect those moving from prior versions to Juno.","commit_id":"3cc472e325396a02b9e10fdd6919307e5bef3116"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"0d4ce6a31c8263733e038bd8434299f2325328bd","unresolved":false,"context_lines":[{"line_number":37,"context_line":"timeline where all tables are created and the database schema is the same no"},{"line_number":38,"context_line":"matter which plugins are used."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"This solution will include a \"healing\" script that will call the DDLs needed to"},{"line_number":41,"context_line":"complete the database schema so that it contain all tables for all database"},{"line_number":42,"context_line":"models. A new timeline will be introduced starting after the Icehouse"},{"line_number":43,"context_line":"release. The healing script will transfer a deployment to the new timeline when"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_073bde38","line":40,"updated":"2014-06-01 15:23:51.000000000","message":"I think it worth mentioning that such healing script is not a migration, despite the fact that it\u0027s a part of neutron-db-manage, and it only support online mode, where DB connection is available.\n\nIMO this also needs to be reflected in Security Impact or Deployment Impact, because such script needs to be executed by DBA rather than deployer.","commit_id":"395fe5d6a220c5c1deda4a7d6c22382b6f71fbd5"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"6e452afb6a87c5d2d00b1e41ecb4457313133d87","unresolved":false,"context_lines":[{"line_number":37,"context_line":"timeline where all tables are created and the database schema is the same no"},{"line_number":38,"context_line":"matter which plugins are used."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"This solution will include a \"healing\" script that will call the DDLs needed to"},{"line_number":41,"context_line":"complete the database schema so that it contain all tables for all database"},{"line_number":42,"context_line":"models. A new timeline will be introduced starting after the Icehouse"},{"line_number":43,"context_line":"release. The healing script will transfer a deployment to the new timeline when"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_82ed1c28","line":40,"in_reply_to":"1ae5cdf2_073bde38","updated":"2014-06-01 16:57:04.000000000","message":"Thanks Eugene. I have updated the info about the online script. \n\nSince I am not a deployer or DBA, I am not sure how to word the deployment impact. Can you offer a suggestion?","commit_id":"395fe5d6a220c5c1deda4a7d6c22382b6f71fbd5"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"f23c3fa3bebcbf86e540b0d3eda396b3ac1f95e5","unresolved":false,"context_lines":[{"line_number":37,"context_line":"timeline where all tables are created and the database schema is the same no"},{"line_number":38,"context_line":"matter which plugins are used."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"This solution will include a \"healing\" script that will call the DDLs needed to"},{"line_number":41,"context_line":"complete the database schema so that it contain all tables for all database"},{"line_number":42,"context_line":"models. A new timeline will be introduced starting after the Icehouse"},{"line_number":43,"context_line":"release. The healing script will transfer a deployment to the new timeline when"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_82d7dc22","line":40,"in_reply_to":"1ae5cdf2_82ed1c28","updated":"2014-06-01 17:14:38.000000000","message":"I made an attempt to explain it. Please see patch 3.","commit_id":"395fe5d6a220c5c1deda4a7d6c22382b6f71fbd5"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"5963d8a177a1a92b259263248f9e9514bf99fdde","unresolved":false,"context_lines":[{"line_number":24,"context_line":"started, the earlier migrations that correspond with the new configuraion will"},{"line_number":25,"context_line":"be missing."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"These conditional migrations have resulted in idempotent versions. In other"},{"line_number":28,"context_line":"words, when one environment\u0027s schema is at a specific version it may not be the"},{"line_number":29,"context_line":"same as another environment at the same version. This even happens in the same"},{"line_number":30,"context_line":"environment during a downgrade if the configuration changes."}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_0a681af4","line":27,"updated":"2014-06-03 01:46:48.000000000","message":"Non-idempotent.","commit_id":"b0cc763880633d6b4268bc13a1a8aa0d8ffb794d"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"98c71232711d529197564b06384fdeb5e658940e","unresolved":false,"context_lines":[{"line_number":24,"context_line":"started, the earlier migrations that correspond with the new configuraion will"},{"line_number":25,"context_line":"be missing."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"These conditional migrations have resulted in idempotent versions. In other"},{"line_number":28,"context_line":"words, when one environment\u0027s schema is at a specific version it may not be the"},{"line_number":29,"context_line":"same as another environment at the same version. This even happens in the same"},{"line_number":30,"context_line":"environment during a downgrade if the configuration changes."}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_53f868c4","line":27,"in_reply_to":"1ae5cdf2_0a681af4","updated":"2014-06-09 05:13:30.000000000","message":"Done","commit_id":"b0cc763880633d6b4268bc13a1a8aa0d8ffb794d"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"d50f7c1b76a1029d1fac2ba7c2c236097d15cc0c","unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":"1) Upgrade to Icehouse if running an earlier release"},{"line_number":118,"context_line":"2) Run the healing script: ``neutron-db-manage --heal``"},{"line_number":119,"context_line":"3) Upgrade to Juno (or later)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"From the Juno release the database will have a new migration timeline. To"},{"line_number":122,"context_line":"downgrade from Juno or later to Icehouse or earlier will require the healing"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_e735fbdb","line":119,"updated":"2014-06-02 14:16:15.000000000","message":"As it\u0027s said on L51, sounds like healing script will ensure db consistency in Juno. Will be this step 3) needed when upgrading to Juno or it will be relevant on to K-release and later?","commit_id":"b0cc763880633d6b4268bc13a1a8aa0d8ffb794d"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"36a1f213e10ac18f6e0528fc12bc82c638570e6e","unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":"1) Upgrade to Icehouse if running an earlier release"},{"line_number":118,"context_line":"2) Run the healing script: ``neutron-db-manage --heal``"},{"line_number":119,"context_line":"3) Upgrade to Juno (or later)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"From the Juno release the database will have a new migration timeline. To"},{"line_number":122,"context_line":"downgrade from Juno or later to Icehouse or earlier will require the healing"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_ffeab7aa","line":119,"in_reply_to":"1ae5cdf2_1d5cdd24","updated":"2014-06-03 14:07:24.000000000","message":"@Henry, that\u0027s why I asked. That means L51 (refactoring steps) and L55 should be changed to Icehouse, right?","commit_id":"b0cc763880633d6b4268bc13a1a8aa0d8ffb794d"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"34e277332d4f0141d4685e9e484d21af9e48f320","unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":"1) Upgrade to Icehouse if running an earlier release"},{"line_number":118,"context_line":"2) Run the healing script: ``neutron-db-manage --heal``"},{"line_number":119,"context_line":"3) Upgrade to Juno (or later)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"From the Juno release the database will have a new migration timeline. To"},{"line_number":122,"context_line":"downgrade from Juno or later to Icehouse or earlier will require the healing"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_ec1cf3c3","line":119,"in_reply_to":"1ae5cdf2_e735fbdb","updated":"2014-06-02 20:18:53.000000000","message":"My thinking is that the healing script will convert migration version \"icehouse\" to \"icehouse_with_all_tables\". This will be the start of the new migration timeline. Then step 3 is needed to run migrations from the juno development cycle to get to migration version \"juno\".\n\nThe alternative would be to collapse all juno-cycle migrations into a single \"juno_initial\" version and start the new timeline there. If we want to do it this way, then will the healing script do all the work?","commit_id":"b0cc763880633d6b4268bc13a1a8aa0d8ffb794d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"e97de3cfa964d122355b037df98f6c4909dc05c6","unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":"1) Upgrade to Icehouse if running an earlier release"},{"line_number":118,"context_line":"2) Run the healing script: ``neutron-db-manage --heal``"},{"line_number":119,"context_line":"3) Upgrade to Juno (or later)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"From the Juno release the database will have a new migration timeline. To"},{"line_number":122,"context_line":"downgrade from Juno or later to Icehouse or earlier will require the healing"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_1d5cdd24","line":119,"in_reply_to":"1ae5cdf2_ec1cf3c3","updated":"2014-06-03 06:26:53.000000000","message":"As an implementation, I am not sure alembic supports two separate timelines because alembic discovers \"head\" revision dynamically. If not supported, do we need to block migrations across the healing migration unless --heal option is specified (to avoid the confusion)?","commit_id":"b0cc763880633d6b4268bc13a1a8aa0d8ffb794d"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"98c71232711d529197564b06384fdeb5e658940e","unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":"1) Upgrade to Icehouse if running an earlier release"},{"line_number":118,"context_line":"2) Run the healing script: ``neutron-db-manage --heal``"},{"line_number":119,"context_line":"3) Upgrade to Juno (or later)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"From the Juno release the database will have a new migration timeline. To"},{"line_number":122,"context_line":"downgrade from Juno or later to Icehouse or earlier will require the healing"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_1326e068","line":119,"in_reply_to":"1ae5cdf2_ffeab7aa","updated":"2014-06-09 05:13:30.000000000","message":"Hopefully I have made it clear in the next patch.","commit_id":"b0cc763880633d6b4268bc13a1a8aa0d8ffb794d"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"9fd5844ca74dacbb11477774e1e46c9fcf8d3fc0","unresolved":false,"context_lines":[{"line_number":117,"context_line":"1) Upgrade to Icehouse if running an earlier release"},{"line_number":118,"context_line":"2) Run the healing script: ``neutron-db-manage --heal``"},{"line_number":119,"context_line":"3) Upgrade to Juno (or later)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"From the Juno release the database will have a new migration timeline. To"},{"line_number":122,"context_line":"downgrade from Juno or later to Icehouse or earlier will require the healing"},{"line_number":123,"context_line":"script to revert to the old timeline:"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_436928bd","line":120,"updated":"2014-06-03 08:24:10.000000000","message":"There is one moment that is not clear for me. What would be if someone forget to use \u0027neutron-db-manage --heal\u0027 before running migrations for Juno and later? In this case there is going to be a lot of errors as migrations will be idempotent.","commit_id":"b0cc763880633d6b4268bc13a1a8aa0d8ffb794d"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"98c71232711d529197564b06384fdeb5e658940e","unresolved":false,"context_lines":[{"line_number":117,"context_line":"1) Upgrade to Icehouse if running an earlier release"},{"line_number":118,"context_line":"2) Run the healing script: ``neutron-db-manage --heal``"},{"line_number":119,"context_line":"3) Upgrade to Juno (or later)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"From the Juno release the database will have a new migration timeline. To"},{"line_number":122,"context_line":"downgrade from Juno or later to Icehouse or earlier will require the healing"},{"line_number":123,"context_line":"script to revert to the old timeline:"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_b3160cf0","line":120,"in_reply_to":"1ae5cdf2_436928bd","updated":"2014-06-09 05:13:30.000000000","message":"New strategy in next patch.","commit_id":"b0cc763880633d6b4268bc13a1a8aa0d8ffb794d"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"d50f7c1b76a1029d1fac2ba7c2c236097d15cc0c","unresolved":false,"context_lines":[{"line_number":126,"context_line":"2) Revert the healing script: ``neutron-db-manage --heal-revert``"},{"line_number":127,"context_line":"3) Downgrade to Icehouse (or earlier)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"TBD: Reverting the healing may not be possible."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Note: Greenfield deployment of the Juno release or later will start at the new"},{"line_number":132,"context_line":"migration timeline and therefore no healing will be involved."}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_2747e34c","line":129,"updated":"2014-06-02 14:16:15.000000000","message":"I vote to not support this unless there are reasonable use cases for downgrading.","commit_id":"b0cc763880633d6b4268bc13a1a8aa0d8ffb794d"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"34e277332d4f0141d4685e9e484d21af9e48f320","unresolved":false,"context_lines":[{"line_number":126,"context_line":"2) Revert the healing script: ``neutron-db-manage --heal-revert``"},{"line_number":127,"context_line":"3) Downgrade to Icehouse (or earlier)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"TBD: Reverting the healing may not be possible."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Note: Greenfield deployment of the Juno release or later will start at the new"},{"line_number":132,"context_line":"migration timeline and therefore no healing will be involved."}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_acf4ab87","line":129,"in_reply_to":"1ae5cdf2_2747e34c","updated":"2014-06-02 20:18:53.000000000","message":"I feel the same way. But I don\u0027t know how common or important it is to be able to do downgrade.","commit_id":"b0cc763880633d6b4268bc13a1a8aa0d8ffb794d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"e97de3cfa964d122355b037df98f6c4909dc05c6","unresolved":false,"context_lines":[{"line_number":126,"context_line":"2) Revert the healing script: ``neutron-db-manage --heal-revert``"},{"line_number":127,"context_line":"3) Downgrade to Icehouse (or earlier)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"TBD: Reverting the healing may not be possible."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Note: Greenfield deployment of the Juno release or later will start at the new"},{"line_number":132,"context_line":"migration timeline and therefore no healing will be involved."}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_b28f98cb","line":129,"in_reply_to":"1ae5cdf2_6ab19e8e","updated":"2014-06-03 06:26:53.000000000","message":"+1 for not supporting downgrade across healing migration. Instead we should note it.","commit_id":"b0cc763880633d6b4268bc13a1a8aa0d8ffb794d"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"5963d8a177a1a92b259263248f9e9514bf99fdde","unresolved":false,"context_lines":[{"line_number":126,"context_line":"2) Revert the healing script: ``neutron-db-manage --heal-revert``"},{"line_number":127,"context_line":"3) Downgrade to Icehouse (or earlier)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"TBD: Reverting the healing may not be possible."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Note: Greenfield deployment of the Juno release or later will start at the new"},{"line_number":132,"context_line":"migration timeline and therefore no healing will be involved."}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_6ab19e8e","line":129,"in_reply_to":"1ae5cdf2_acf4ab87","updated":"2014-06-03 01:46:48.000000000","message":"We don\u0027t need to support downgrading IMHO, so it\u0027s ok to leave this out.","commit_id":"b0cc763880633d6b4268bc13a1a8aa0d8ffb794d"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"98c71232711d529197564b06384fdeb5e658940e","unresolved":false,"context_lines":[{"line_number":126,"context_line":"2) Revert the healing script: ``neutron-db-manage --heal-revert``"},{"line_number":127,"context_line":"3) Downgrade to Icehouse (or earlier)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"TBD: Reverting the healing may not be possible."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Note: Greenfield deployment of the Juno release or later will start at the new"},{"line_number":132,"context_line":"migration timeline and therefore no healing will be involved."}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_73e3a405","line":129,"in_reply_to":"1ae5cdf2_b28f98cb","updated":"2014-06-09 05:13:30.000000000","message":"After discussing with Salvatore and Mark it seems we can fairly easily support downgrade, with the understanding that all tables will still be present after the downgrade.","commit_id":"b0cc763880633d6b4268bc13a1a8aa0d8ffb794d"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"d50f7c1b76a1029d1fac2ba7c2c236097d15cc0c","unresolved":false,"context_lines":[{"line_number":146,"context_line":"manually coded."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"Some migration errors may need to be fixed in stable/havana before the healing"},{"line_number":149,"context_line":"script can be effective. These errors will be fixed as bugs."},{"line_number":150,"context_line":""},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"Assignee(s)"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_07910799","line":149,"updated":"2014-06-02 14:16:15.000000000","message":"Is there a reason (example) what cannot be done as a part of healing script?","commit_id":"b0cc763880633d6b4268bc13a1a8aa0d8ffb794d"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"34e277332d4f0141d4685e9e484d21af9e48f320","unresolved":false,"context_lines":[{"line_number":146,"context_line":"manually coded."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"Some migration errors may need to be fixed in stable/havana before the healing"},{"line_number":149,"context_line":"script can be effective. These errors will be fixed as bugs."},{"line_number":150,"context_line":""},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"Assignee(s)"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_8cd28ffe","line":149,"in_reply_to":"1ae5cdf2_07910799","updated":"2014-06-02 20:18:53.000000000","message":"When the auto-generation of the schema is removed and we rely only on migrations (code in https://review.openstack.org/40296) then a number of migration bugs are exposed. I feel these bugs should be addressed before the healing script.\n\nI will try to enumerate the bugs. Not sure whether to add them here or in the blueprint. Maybe mark the bugs related to the BP?","commit_id":"b0cc763880633d6b4268bc13a1a8aa0d8ffb794d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"e97de3cfa964d122355b037df98f6c4909dc05c6","unresolved":false,"context_lines":[{"line_number":146,"context_line":"manually coded."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"Some migration errors may need to be fixed in stable/havana before the healing"},{"line_number":149,"context_line":"script can be effective. These errors will be fixed as bugs."},{"line_number":150,"context_line":""},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"Assignee(s)"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_9259bc5c","line":149,"in_reply_to":"1ae5cdf2_8cd28ffe","updated":"2014-06-03 06:26:53.000000000","message":"Agree with Henry. IMO it is enough to associate related bugs to this blueprint. It helps us tracking issues.","commit_id":"b0cc763880633d6b4268bc13a1a8aa0d8ffb794d"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"98c71232711d529197564b06384fdeb5e658940e","unresolved":false,"context_lines":[{"line_number":146,"context_line":"manually coded."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"Some migration errors may need to be fixed in stable/havana before the healing"},{"line_number":149,"context_line":"script can be effective. These errors will be fixed as bugs."},{"line_number":150,"context_line":""},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"Assignee(s)"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_f3bed4d3","line":149,"in_reply_to":"1ae5cdf2_9259bc5c","updated":"2014-06-09 05:13:30.000000000","message":"I have associated related bugs to the blueprint.","commit_id":"b0cc763880633d6b4268bc13a1a8aa0d8ffb794d"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"b10300bc14e4f62d12551882306ad7d8fcfb7208","unresolved":false,"context_lines":[{"line_number":171,"context_line":"There should be an explicit call for healing when migrating from Icehouse to"},{"line_number":172,"context_line":"Juno in Grenade."},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"Unit (and functional?) testing of migrations shall be added."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_2e6cf734","line":174,"updated":"2014-06-03 12:38:22.000000000","message":"As unit tests could be used https://review.openstack.org/76519, https://review.openstack.org/76520 after its appearing in oslo.db and specifying for new neutron db structure.","commit_id":"b0cc763880633d6b4268bc13a1a8aa0d8ffb794d"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"98c71232711d529197564b06384fdeb5e658940e","unresolved":false,"context_lines":[{"line_number":171,"context_line":"There should be an explicit call for healing when migrating from Icehouse to"},{"line_number":172,"context_line":"Juno in Grenade."},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"Unit (and functional?) testing of migrations shall be added."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_13b420f1","line":174,"in_reply_to":"1ae5cdf2_2e6cf734","updated":"2014-06-09 05:13:30.000000000","message":"Done","commit_id":"b0cc763880633d6b4268bc13a1a8aa0d8ffb794d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"e97de3cfa964d122355b037df98f6c4909dc05c6","unresolved":false,"context_lines":[{"line_number":177,"context_line":"Documentation Impact"},{"line_number":178,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"Guide for upgrading needs to be updated."},{"line_number":181,"context_line":""},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_3240e855","line":180,"updated":"2014-06-03 06:26:53.000000000","message":"+ important notice in the release note :-)","commit_id":"b0cc763880633d6b4268bc13a1a8aa0d8ffb794d"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"98c71232711d529197564b06384fdeb5e658940e","unresolved":false,"context_lines":[{"line_number":177,"context_line":"Documentation Impact"},{"line_number":178,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"Guide for upgrading needs to be updated."},{"line_number":181,"context_line":""},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_339e7c57","line":180,"in_reply_to":"1ae5cdf2_3240e855","updated":"2014-06-09 05:13:30.000000000","message":"Done","commit_id":"b0cc763880633d6b4268bc13a1a8aa0d8ffb794d"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"fa06848387dcb213fd24d936bfb72d364b79e034","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"The database schema is different based on which core and service plugins are"},{"line_number":23,"context_line":"configured. If a new or different plugin is configured after a deployment is"},{"line_number":24,"context_line":"started, the earlier migrations that correspond with the new configuraion will"},{"line_number":25,"context_line":"be missing."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"These conditional migrations have resulted in non-idempotent versions. In other"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_1346f221","line":24,"updated":"2014-06-16 10:41:06.000000000","message":"I don\u0027t care about this but if you submit another patchset, consider fixing the typo \"configuraion\".\nOtherwise, I don\u0027t mind.","commit_id":"a2fa643779c1bf576edcfd117f9486e415f17d56"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"816035496b83ac0bbbf93307da302379f8f751f2","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"The database schema is different based on which core and service plugins are"},{"line_number":23,"context_line":"configured. If a new or different plugin is configured after a deployment is"},{"line_number":24,"context_line":"started, the earlier migrations that correspond with the new configuraion will"},{"line_number":25,"context_line":"be missing."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"These conditional migrations have resulted in non-idempotent versions. In other"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_7c92a34c","line":24,"in_reply_to":"1ae5cdf2_1346f221","updated":"2014-06-16 16:18:46.000000000","message":"Done","commit_id":"a2fa643779c1bf576edcfd117f9486e415f17d56"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"fa06848387dcb213fd24d936bfb72d364b79e034","unresolved":false,"context_lines":[{"line_number":24,"context_line":"started, the earlier migrations that correspond with the new configuraion will"},{"line_number":25,"context_line":"be missing."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"These conditional migrations have resulted in non-idempotent versions. In other"},{"line_number":28,"context_line":"words, when one environment\u0027s schema is at a specific version it may not be the"},{"line_number":29,"context_line":"same as another environment at the same version. This even happens in the same"},{"line_number":30,"context_line":"environment during a downgrade if the configuration changes."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_70800c4a","line":27,"updated":"2014-06-16 10:41:06.000000000","message":"technically I would say that the migration process is not idempotent resulting in schema versions which depend on the current configuration.\n\nBut this is not important.","commit_id":"a2fa643779c1bf576edcfd117f9486e415f17d56"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"816035496b83ac0bbbf93307da302379f8f751f2","unresolved":false,"context_lines":[{"line_number":24,"context_line":"started, the earlier migrations that correspond with the new configuraion will"},{"line_number":25,"context_line":"be missing."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"These conditional migrations have resulted in non-idempotent versions. In other"},{"line_number":28,"context_line":"words, when one environment\u0027s schema is at a specific version it may not be the"},{"line_number":29,"context_line":"same as another environment at the same version. This even happens in the same"},{"line_number":30,"context_line":"environment during a downgrade if the configuration changes."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_dca01794","line":27,"in_reply_to":"1ae5cdf2_70800c4a","updated":"2014-06-16 16:18:46.000000000","message":"Done","commit_id":"a2fa643779c1bf576edcfd117f9486e415f17d56"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"fa06848387dcb213fd24d936bfb72d364b79e034","unresolved":false,"context_lines":[{"line_number":48,"context_line":"   to achieve the complete database schema."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"2) A healing migration that ensures that the database schema is complete and"},{"line_number":51,"context_line":"   consistent. The version will be named **all_tables**."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"3) All migrations after **all_tables** will be unconditional. This requires"},{"line_number":54,"context_line":"   updating the behavior of the --autogenerate for neutron-db-manage, and"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_b0c8d4a9","line":51,"updated":"2014-06-16 10:41:06.000000000","message":"I\u0027m not going to get picky, but all_tables does not immediately suggest the purpose of the migration.\n\nconsider \"db_healing\".","commit_id":"a2fa643779c1bf576edcfd117f9486e415f17d56"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"816035496b83ac0bbbf93307da302379f8f751f2","unresolved":false,"context_lines":[{"line_number":48,"context_line":"   to achieve the complete database schema."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"2) A healing migration that ensures that the database schema is complete and"},{"line_number":51,"context_line":"   consistent. The version will be named **all_tables**."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"3) All migrations after **all_tables** will be unconditional. This requires"},{"line_number":54,"context_line":"   updating the behavior of the --autogenerate for neutron-db-manage, and"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_3cbf3bac","line":51,"in_reply_to":"1ae5cdf2_b0c8d4a9","updated":"2014-06-16 16:18:46.000000000","message":"Done","commit_id":"a2fa643779c1bf576edcfd117f9486e415f17d56"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"5cb4c47edacc56682ef394ecfc368f4ef883cf9c","unresolved":false,"context_lines":[{"line_number":59,"context_line":"aspects:"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"* In the upgrade direction it will introspect the schema and only add tables"},{"line_number":62,"context_line":"  that are missing. Therefore it cannot be run in offline mode."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"* In the downgrade direction it will make no schema changes. This means it will"},{"line_number":65,"context_line":"  not remove any tables"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_c2856408","line":62,"updated":"2014-06-09 21:44:48.000000000","message":"can\u0027t you use \"create table if not exists\"?","commit_id":"a2fa643779c1bf576edcfd117f9486e415f17d56"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"816035496b83ac0bbbf93307da302379f8f751f2","unresolved":false,"context_lines":[{"line_number":59,"context_line":"aspects:"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"* In the upgrade direction it will introspect the schema and only add tables"},{"line_number":62,"context_line":"  that are missing. Therefore it cannot be run in offline mode."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"* In the downgrade direction it will make no schema changes. This means it will"},{"line_number":65,"context_line":"  not remove any tables"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_fcaa3319","line":62,"in_reply_to":"1ae5cdf2_33604ecf","updated":"2014-06-16 16:18:46.000000000","message":"I added a note about possibly needing to alter tables.","commit_id":"a2fa643779c1bf576edcfd117f9486e415f17d56"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"56f40a425ad9e597c288326bcfaf9ba90b223c55","unresolved":false,"context_lines":[{"line_number":59,"context_line":"aspects:"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"* In the upgrade direction it will introspect the schema and only add tables"},{"line_number":62,"context_line":"  that are missing. Therefore it cannot be run in offline mode."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"* In the downgrade direction it will make no schema changes. This means it will"},{"line_number":65,"context_line":"  not remove any tables"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_dd4e0cc2","line":62,"in_reply_to":"1ae5cdf2_684d4f72","updated":"2014-06-10 11:40:45.000000000","message":"It\u0027s supported for sql engines. but alembic has no support for conditional DDL.\nPlus sql backend specific issues pointed out by Ann.","commit_id":"a2fa643779c1bf576edcfd117f9486e415f17d56"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"0ba181a3961ce893174d0c684447a9467cdca47d","unresolved":false,"context_lines":[{"line_number":59,"context_line":"aspects:"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"* In the upgrade direction it will introspect the schema and only add tables"},{"line_number":62,"context_line":"  that are missing. Therefore it cannot be run in offline mode."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"* In the downgrade direction it will make no schema changes. This means it will"},{"line_number":65,"context_line":"  not remove any tables"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_cb065321","line":62,"in_reply_to":"1ae5cdf2_684d4f72","updated":"2014-06-10 06:32:17.000000000","message":"There is two points that it is not available to use \"create table if not exists\":\n\n1) that was already mentioned: specific of dialects. So sql will become very huge as for PostgeSQL for example type must be created at first but there is no \"create if type exists\" structure.\n\n2) Dependencies with other tables(foreign keys,etc) We can create one table with \"create table if not exists\" but we also need to check that all table that have dependencies with current one are already created.","commit_id":"a2fa643779c1bf576edcfd117f9486e415f17d56"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"fa06848387dcb213fd24d936bfb72d364b79e034","unresolved":false,"context_lines":[{"line_number":59,"context_line":"aspects:"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"* In the upgrade direction it will introspect the schema and only add tables"},{"line_number":62,"context_line":"  that are missing. Therefore it cannot be run in offline mode."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"* In the downgrade direction it will make no schema changes. This means it will"},{"line_number":65,"context_line":"  not remove any tables"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_33604ecf","line":62,"in_reply_to":"1ae5cdf2_9c60e636","updated":"2014-06-16 10:41:06.000000000","message":"I think there is a chance, even if I can\u0027t confirm it, that as a part of the healing process we might need to alter some tables.","commit_id":"a2fa643779c1bf576edcfd117f9486e415f17d56"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"change_message_id":"88cccf71462b03de85b640f9c7068335461e823d","unresolved":false,"context_lines":[{"line_number":59,"context_line":"aspects:"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"* In the upgrade direction it will introspect the schema and only add tables"},{"line_number":62,"context_line":"  that are missing. Therefore it cannot be run in offline mode."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"* In the downgrade direction it will make no schema changes. This means it will"},{"line_number":65,"context_line":"  not remove any tables"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_684d4f72","line":62,"in_reply_to":"1ae5cdf2_c2856408","updated":"2014-06-09 22:28:29.000000000","message":"I don\u0027t think \"if not exists\" is in standard sql. So it might not work in some platform and/or versions.","commit_id":"a2fa643779c1bf576edcfd117f9486e415f17d56"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"b27eb362bb1564b07abffa2323af9faa6caa894d","unresolved":false,"context_lines":[{"line_number":59,"context_line":"aspects:"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"* In the upgrade direction it will introspect the schema and only add tables"},{"line_number":62,"context_line":"  that are missing. Therefore it cannot be run in offline mode."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"* In the downgrade direction it will make no schema changes. This means it will"},{"line_number":65,"context_line":"  not remove any tables"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_9c60e636","line":62,"in_reply_to":"1ae5cdf2_c5e0e598","updated":"2014-06-11 02:21:18.000000000","message":"Adding a column should be a separate migration submitted together with the change in the model for that table.\n\nThis healing migration is only to go from icehouse_release to all_tables without any change to the models. This *should* mean only adding tables. If an existing icehouse_release table\u0027s schema does not match its model then the healing will include a change to bring the schema up to date.","commit_id":"a2fa643779c1bf576edcfd117f9486e415f17d56"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"c5a8edda490b59937087a6a957139b00deb9027e","unresolved":false,"context_lines":[{"line_number":59,"context_line":"aspects:"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"* In the upgrade direction it will introspect the schema and only add tables"},{"line_number":62,"context_line":"  that are missing. Therefore it cannot be run in offline mode."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"* In the downgrade direction it will make no schema changes. This means it will"},{"line_number":65,"context_line":"  not remove any tables"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_5aa5a702","line":62,"in_reply_to":"1ae5cdf2_cb065321","updated":"2014-06-10 08:41:53.000000000","message":"ok, thanks for explanation.","commit_id":"a2fa643779c1bf576edcfd117f9486e415f17d56"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"816035496b83ac0bbbf93307da302379f8f751f2","unresolved":false,"context_lines":[{"line_number":59,"context_line":"aspects:"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"* In the upgrade direction it will introspect the schema and only add tables"},{"line_number":62,"context_line":"  that are missing. Therefore it cannot be run in offline mode."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"* In the downgrade direction it will make no schema changes. This means it will"},{"line_number":65,"context_line":"  not remove any tables"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_fc7153df","line":62,"in_reply_to":"1ae5cdf2_dd4e0cc2","updated":"2014-06-16 16:18:46.000000000","message":"I added the reasons for offline mode.","commit_id":"a2fa643779c1bf576edcfd117f9486e415f17d56"},{"author":{"_account_id":11682,"name":"Ryan Moats","email":"rmoats@us.ibm.com","username":"regXboi"},"change_message_id":"6a7157725fff1f6d562e4f65838ee8411358e426","unresolved":false,"context_lines":[{"line_number":59,"context_line":"aspects:"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"* In the upgrade direction it will introspect the schema and only add tables"},{"line_number":62,"context_line":"  that are missing. Therefore it cannot be run in offline mode."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"* In the downgrade direction it will make no schema changes. This means it will"},{"line_number":65,"context_line":"  not remove any tables"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_c5e0e598","line":62,"in_reply_to":"1ae5cdf2_dd4e0cc2","updated":"2014-06-10 18:18:27.000000000","message":"This whole draft assumes that the only changes allowed are to add tables.  Is it an unstated assumption that adding columns to an existing table is out of scope?","commit_id":"a2fa643779c1bf576edcfd117f9486e415f17d56"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"fa06848387dcb213fd24d936bfb72d364b79e034","unresolved":false,"context_lines":[{"line_number":67,"context_line":"The latter behavior means that if a deployment is upgraded and then downgraded"},{"line_number":68,"context_line":"through the healing migration, the schema will contain tables that were not"},{"line_number":69,"context_line":"present before. However, these tables are not used and will not affect the"},{"line_number":70,"context_line":"deployment."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_106d089a","line":70,"updated":"2014-06-16 10:41:06.000000000","message":"this is what I was referring to with the \u0027back to the future metaphore\u0027.\nIf you downgrade you back to icehouse and havana, and the software still looks as before. But if look at the db, it\u0027s not the icehouse or havana db you used to work with, but an healed one.","commit_id":"a2fa643779c1bf576edcfd117f9486e415f17d56"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"816035496b83ac0bbbf93307da302379f8f751f2","unresolved":false,"context_lines":[{"line_number":67,"context_line":"The latter behavior means that if a deployment is upgraded and then downgraded"},{"line_number":68,"context_line":"through the healing migration, the schema will contain tables that were not"},{"line_number":69,"context_line":"present before. However, these tables are not used and will not affect the"},{"line_number":70,"context_line":"deployment."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_e78620ba","line":70,"in_reply_to":"1ae5cdf2_106d089a","updated":"2014-06-16 16:18:46.000000000","message":"I tried to clarify further using some of your wording. Thanks.","commit_id":"a2fa643779c1bf576edcfd117f9486e415f17d56"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"fa06848387dcb213fd24d936bfb72d364b79e034","unresolved":false,"context_lines":[{"line_number":69,"context_line":"present before. However, these tables are not used and will not affect the"},{"line_number":70,"context_line":"deployment."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Alternatives"},{"line_number":74,"context_line":"------------"},{"line_number":75,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_53b95a14","line":72,"updated":"2014-06-16 10:41:06.000000000","message":"There is probably something else which is worth doing to make downgrade working and attain a cleaner code base.\n\n- all the migrations between havana and icehouse might be squashed into a single migration, which assumes an \"healed\" state\n- in order for a downgrade from icehouse to work in this case, the downgrade part of the migration should also do the healing. This will put users into a \"healed\" havana db state\n- all the migration which were prior to havana would be removed and a new \"havana_initial\" state should be defined.\n\nThis might look cool, but it will cause a bit of a problem for  people running folsom, grizzly, and havana we might have a little problem.\nUsually one first updates the source code tree and then runs db migrations (I don\u0027t see a different way of doing things at least).\n\nIf we alter the migration path prior to icehouse these users might not be able anymore to upgrade.\n\nSince I\u0027m strongly in favour of coalescing older migrations into single \"release-wide\" migrations and completely remove all the harness for doing configuration based migrations, I propose the following:\n1) for each supported version, have a \"healing migration\". We might be even able to run the same healing migration for each version, if we design it appropriately.\n\nExample:\nfolsom -\u003e folsom_healing -\u003e folsom_to_grizzly -\u003e grizzly -\u003e grizzly_healing -\u003e grizzly_to_havana -\u003e havana -\u003e havana_healing -\u003e havana_to_icehouse -\u003e icehouse -\u003e icehouse_healing -\u003e current_version -\u003e icehouse_healing -\u003e .... -\u003e juno\n\n2) as creating an healing migration for each version might be daunting, assuming we can\u0027t do a versatile healing migration, check if folsom can be dropped at all. It\u0027s not supported anymore, so there might be no requirement to support users still running it. Grizzly is not supported anymore as well, but we see posts almost on a daily bases from people running it.\n\n3) This does not have to be part of this blueprint, as there\u0027s already enough meat in it. I\u0027d do a spec dependent on this for \"removing config-specific migration logic and coalescing migration path\"","commit_id":"a2fa643779c1bf576edcfd117f9486e415f17d56"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"816035496b83ac0bbbf93307da302379f8f751f2","unresolved":false,"context_lines":[{"line_number":69,"context_line":"present before. However, these tables are not used and will not affect the"},{"line_number":70,"context_line":"deployment."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Alternatives"},{"line_number":74,"context_line":"------------"},{"line_number":75,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_a2a326ff","line":72,"in_reply_to":"1ae5cdf2_53b95a14","updated":"2014-06-16 16:18:46.000000000","message":"Very interesting. I agree this should go in a separate blueprint. I\u0027ll get the wheels rolling on that since this will need to go in Juno for it to succeed.","commit_id":"a2fa643779c1bf576edcfd117f9486e415f17d56"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b2f1c2f2f92fc8cf409226cf97dcbaf7c4e8cbf0","unresolved":false,"context_lines":[{"line_number":69,"context_line":"present before. However, these tables are not used and will not affect the"},{"line_number":70,"context_line":"deployment."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Alternatives"},{"line_number":74,"context_line":"------------"},{"line_number":75,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_53b4d1d0","line":72,"in_reply_to":"1ae5cdf2_a2a326ff","updated":"2014-06-17 06:43:24.000000000","message":"I like this idea and very interesting (though I agree it should be a separate blueprint). It makes things simpler and we don\u0027t need to take care of schema migrations over two releases. It is not easy to consider Havana migrations in Juno :-(","commit_id":"a2fa643779c1bf576edcfd117f9486e415f17d56"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"fa06848387dcb213fd24d936bfb72d364b79e034","unresolved":false,"context_lines":[{"line_number":83,"context_line":"-----------------"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"Maybe some database models need to be updated in order to have non-conflicting"},{"line_number":86,"context_line":"models based on core and service plugins."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"REST API impact"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_304cc4c8","line":86,"updated":"2014-06-16 10:41:06.000000000","message":"I think this can happen also between distinct vendor plugins - even if I have no data point for it at the moment.","commit_id":"a2fa643779c1bf576edcfd117f9486e415f17d56"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"816035496b83ac0bbbf93307da302379f8f751f2","unresolved":false,"context_lines":[{"line_number":83,"context_line":"-----------------"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"Maybe some database models need to be updated in order to have non-conflicting"},{"line_number":86,"context_line":"models based on core and service plugins."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"REST API impact"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_02bf7afd","line":86,"in_reply_to":"1ae5cdf2_304cc4c8","updated":"2014-06-16 16:18:46.000000000","message":"I am not sure what you are thinking of? You mean the same table name in two different plugins?","commit_id":"a2fa643779c1bf576edcfd117f9486e415f17d56"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"fa06848387dcb213fd24d936bfb72d364b79e034","unresolved":false,"context_lines":[{"line_number":130,"context_line":"the schema if downgrading from **all_tables** for newer."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"Note: Greenfield deployment of the Juno release or later will start at the new"},{"line_number":133,"context_line":"migration timeline and therefore no healing will be involved."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"Developer impact"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_50723012","line":133,"updated":"2014-06-16 10:41:06.000000000","message":"Please add a note for trunk chasers.\nAs we\u0027re already in Juno-2 they might be at a DB version  which is already past icehouse_release.\n\nThey need to do healing as well.\nFor them, we have two solutions.\n\n1) downgrade to icehouse and then upgrade again to the latest release. This would generally work but if we have a migration that added tables/columns we might incur data loss\n2) add again the healing migration in the timeline right when it\u0027s merged. This will ensure that trunk chasers will run it. Also the healing migration is idempotent, so running it twice should not make any harm - just a bit of a waste of time, but I guess that\u0027s acceptable.","commit_id":"a2fa643779c1bf576edcfd117f9486e415f17d56"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"5c595e77a5d35274b18fb698835829a0e7b4db2b","unresolved":false,"context_lines":[{"line_number":130,"context_line":"the schema if downgrading from **all_tables** for newer."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"Note: Greenfield deployment of the Juno release or later will start at the new"},{"line_number":133,"context_line":"migration timeline and therefore no healing will be involved."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"Developer impact"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_a7b25804","line":133,"in_reply_to":"1ae5cdf2_50723012","updated":"2014-06-16 12:11:35.000000000","message":"+1 for taking the 2nd approach","commit_id":"a2fa643779c1bf576edcfd117f9486e415f17d56"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"816035496b83ac0bbbf93307da302379f8f751f2","unresolved":false,"context_lines":[{"line_number":130,"context_line":"the schema if downgrading from **all_tables** for newer."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"Note: Greenfield deployment of the Juno release or later will start at the new"},{"line_number":133,"context_line":"migration timeline and therefore no healing will be involved."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"Developer impact"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_e26fee91","line":133,"in_reply_to":"1ae5cdf2_50723012","updated":"2014-06-16 16:18:46.000000000","message":"Actually during the meeting today (June 16) we decided that we will not put the healing right after icehouse_release, but instead at the current head when it is ready to merge. I will update the spec.","commit_id":"a2fa643779c1bf576edcfd117f9486e415f17d56"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"fa06848387dcb213fd24d936bfb72d364b79e034","unresolved":false,"context_lines":[{"line_number":140,"context_line":""},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"Implementation"},{"line_number":143,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"Most of the work lies in developing a robust healing migration. Alembic will be"},{"line_number":146,"context_line":"used where possible to maximize automation, but some healing may need to be"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_d0380040","line":143,"updated":"2014-06-16 10:41:06.000000000","message":"A possible unexpected hurdle would be conflicting migrations.\nExample: two distinct migrations for two distinct plugins adding an attribute with the same name but different type.\n\nIs this what you refer below as a situation requiring \"manual\" healing?","commit_id":"a2fa643779c1bf576edcfd117f9486e415f17d56"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"816035496b83ac0bbbf93307da302379f8f751f2","unresolved":false,"context_lines":[{"line_number":140,"context_line":""},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"Implementation"},{"line_number":143,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"Most of the work lies in developing a robust healing migration. Alembic will be"},{"line_number":146,"context_line":"used where possible to maximize automation, but some healing may need to be"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_224716be","line":143,"in_reply_to":"1ae5cdf2_d0380040","updated":"2014-06-16 16:18:46.000000000","message":"Yes. I will update for clarity.","commit_id":"a2fa643779c1bf576edcfd117f9486e415f17d56"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"fa06848387dcb213fd24d936bfb72d364b79e034","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"Most of the work lies in developing a robust healing migration. Alembic will be"},{"line_number":146,"context_line":"used where possible to maximize automation, but some healing may need to be"},{"line_number":147,"context_line":"manually coded."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Assignee(s)"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_50edd0b6","line":147,"updated":"2014-06-16 10:41:06.000000000","message":"can you give me an example of \"manual healing\"","commit_id":"a2fa643779c1bf576edcfd117f9486e415f17d56"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"5c595e77a5d35274b18fb698835829a0e7b4db2b","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"Most of the work lies in developing a robust healing migration. Alembic will be"},{"line_number":146,"context_line":"used where possible to maximize automation, but some healing may need to be"},{"line_number":147,"context_line":"manually coded."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Assignee(s)"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_87bd5cda","line":147,"in_reply_to":"1ae5cdf2_50edd0b6","updated":"2014-06-16 12:11:35.000000000","message":"ENUMs in PostgreSQL? (in case we are modifying them in any of migration scripts, but I haven\u0027t actually checked that)","commit_id":"a2fa643779c1bf576edcfd117f9486e415f17d56"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"816035496b83ac0bbbf93307da302379f8f751f2","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"Most of the work lies in developing a robust healing migration. Alembic will be"},{"line_number":146,"context_line":"used where possible to maximize automation, but some healing may need to be"},{"line_number":147,"context_line":"manually coded."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Assignee(s)"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_62103eac","line":147,"in_reply_to":"1ae5cdf2_50edd0b6","updated":"2014-06-16 16:18:46.000000000","message":"Will add examples.","commit_id":"a2fa643779c1bf576edcfd117f9486e415f17d56"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e47c5399e5ee414bdef57f6c8507256a82b36068","unresolved":false,"context_lines":[{"line_number":167,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"There should be an explicit call for healing when migrating from Icehouse to"},{"line_number":170,"context_line":"Juno in Grenade."},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"Unit (and functional?) testing of migrations shall be added. We plan to utilize"},{"line_number":173,"context_line":"the unit test framework from the incubated oslo.db package."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_1d015406","line":170,"updated":"2014-06-10 11:49:32.000000000","message":"I think this is information is old. The **all_tables** version is direct successor of icehouse so I think no need of explicit call, am I right? (this also applies generally for upgrading Neutron database from Icehouse)","commit_id":"a2fa643779c1bf576edcfd117f9486e415f17d56"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"4fd769b8bf4c2abbfe5b17000821cc97a4070e5d","unresolved":false,"context_lines":[{"line_number":167,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"There should be an explicit call for healing when migrating from Icehouse to"},{"line_number":170,"context_line":"Juno in Grenade."},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"Unit (and functional?) testing of migrations shall be added. We plan to utilize"},{"line_number":173,"context_line":"the unit test framework from the incubated oslo.db package."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_f8059614","line":170,"in_reply_to":"1ae5cdf2_1d015406","updated":"2014-06-10 12:16:57.000000000","message":"Correct. Will remove it in next update.","commit_id":"a2fa643779c1bf576edcfd117f9486e415f17d56"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"fa06848387dcb213fd24d936bfb72d364b79e034","unresolved":false,"context_lines":[{"line_number":170,"context_line":"Juno in Grenade."},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"Unit (and functional?) testing of migrations shall be added. We plan to utilize"},{"line_number":173,"context_line":"the unit test framework from the incubated oslo.db package."},{"line_number":174,"context_line":""},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_902f583e","line":173,"updated":"2014-06-16 10:41:06.000000000","message":"Moving to oslo.db should probably kept as a distinct task.\nAlso, I don\u0027t want to make this a dependency for this blueprint.","commit_id":"a2fa643779c1bf576edcfd117f9486e415f17d56"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"6beaec79bd2037a77d50bd2bfd78d97a7139d0b9","unresolved":false,"context_lines":[{"line_number":60,"context_line":"aspects:"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"* In the upgrade direction it will introspect the schema and only add tables"},{"line_number":63,"context_line":"  that are missing. Therefore it cannot be run in offline mode"},{"line_number":64,"context_line":"  (onlinedetails_)."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"* In the downgrade direction it will make no schema changes. This means it will"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1ae5cdf2_6d91f8f0","line":63,"updated":"2014-06-16 22:45:36.000000000","message":"I seem to recall during the summit discussion that it could be possible to generate SQL in online mode and then run the resulting SQL offline.  Is that worth documenting or is it off the table?","commit_id":"6e80bb25d4688fc88f27e7e8b20aeff9a4c0fc4f"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"f4d6b4e986af6d4de4890cbeeefbf87526371b53","unresolved":false,"context_lines":[{"line_number":60,"context_line":"aspects:"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"* In the upgrade direction it will introspect the schema and only add tables"},{"line_number":63,"context_line":"  that are missing. Therefore it cannot be run in offline mode"},{"line_number":64,"context_line":"  (onlinedetails_)."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"* In the downgrade direction it will make no schema changes. This means it will"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1ae5cdf2_31f2ea6f","line":63,"in_reply_to":"1ae5cdf2_6d91f8f0","updated":"2014-06-16 23:22:02.000000000","message":"that should be possible. But by running the migration \"offline\" so far we meant that the sql should be generated as well in offline mode.","commit_id":"6e80bb25d4688fc88f27e7e8b20aeff9a4c0fc4f"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"6beaec79bd2037a77d50bd2bfd78d97a7139d0b9","unresolved":false,"context_lines":[{"line_number":101,"context_line":"2) Dependencies between tables (e.g. foreign keys) mean we would need to check"},{"line_number":102,"context_line":"   that all tables with dependencies on the current one are already created."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"3) Alembic has no support for conditional DDL."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1ae5cdf2_cd4dac9b","line":104,"updated":"2014-06-16 22:45:36.000000000","message":"Does the Alembic project have any plans to support conditional DDL?","commit_id":"6e80bb25d4688fc88f27e7e8b20aeff9a4c0fc4f"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"f4d6b4e986af6d4de4890cbeeefbf87526371b53","unresolved":false,"context_lines":[{"line_number":101,"context_line":"2) Dependencies between tables (e.g. foreign keys) mean we would need to check"},{"line_number":102,"context_line":"   that all tables with dependencies on the current one are already created."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"3) Alembic has no support for conditional DDL."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1ae5cdf2_11940ee7","line":104,"in_reply_to":"1ae5cdf2_cd4dac9b","updated":"2014-06-16 23:22:02.000000000","message":"I frankly have no idea but... it\u0027s open source! You can do a pull request if you want for it!\n\nOn a more serious note, even if there were plans for this feature, it will be hardly available in the timeline we have for this work.","commit_id":"6e80bb25d4688fc88f27e7e8b20aeff9a4c0fc4f"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"6beaec79bd2037a77d50bd2bfd78d97a7139d0b9","unresolved":false,"context_lines":[{"line_number":110,"context_line":"Instead of a healing migration we could break the migration timeline after"},{"line_number":111,"context_line":"Icehouse and create a new one beginning at Juno that includes all tables. A"},{"line_number":112,"context_line":"manual script could be provided to convert the schema from the old timeline to"},{"line_number":113,"context_line":"the new. This approach would not allow a downgrade via migration."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"Data model impact"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1ae5cdf2_0d16b455","line":113,"updated":"2014-06-16 22:45:36.000000000","message":"Are downgrades considered necessary then?  This section appears to suggest that the chosen approach is preferable mainly because it supports downgrades.  If that\u0027s not true, would it make sense to provide more detail as to why the alternative is not preferable?","commit_id":"6e80bb25d4688fc88f27e7e8b20aeff9a4c0fc4f"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"f4d6b4e986af6d4de4890cbeeefbf87526371b53","unresolved":false,"context_lines":[{"line_number":110,"context_line":"Instead of a healing migration we could break the migration timeline after"},{"line_number":111,"context_line":"Icehouse and create a new one beginning at Juno that includes all tables. A"},{"line_number":112,"context_line":"manual script could be provided to convert the schema from the old timeline to"},{"line_number":113,"context_line":"the new. This approach would not allow a downgrade via migration."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"Data model impact"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1ae5cdf2_11308e06","line":113,"in_reply_to":"1ae5cdf2_0d16b455","updated":"2014-06-16 23:22:02.000000000","message":"Downgrade ability is a nice-to-have albeit non super important feature.\nHowever, since doing the healing as a migration is notvery different than doing a script, we can achieve this advantage at little cost.\n\nSomething else, probably not mentioned explicitly here, pertains upgrades.\nIf we break the migration path then we\u0027ll need to ensure the migration process incorporates the healing script as a part of the migration process:\n   1) upgrade from wherever you are to icehouse\n   2) do the healing script\n   3) do any post-icehouse migration\nno big deal again, but this is for me a hint that after all the healing script is a migration.\n\nAnd finally, we will drop havana support when k is released, and even if not supported anymore there are several users out there running grizzly, or, $deity forbid, folsom.\nThis means we\u0027ll need to maintain the old migration timeline and the new one in two distinct alembic environment. I ended up in this situation in the past and it turned out to be a bit fiddly.","commit_id":"6e80bb25d4688fc88f27e7e8b20aeff9a4c0fc4f"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"a334a625201b5e1a8fa9e64395e000442016e258","unresolved":false,"context_lines":[{"line_number":110,"context_line":"Instead of a healing migration we could break the migration timeline after"},{"line_number":111,"context_line":"Icehouse and create a new one beginning at Juno that includes all tables. A"},{"line_number":112,"context_line":"manual script could be provided to convert the schema from the old timeline to"},{"line_number":113,"context_line":"the new. This approach would not allow a downgrade via migration."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"Data model impact"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1ae5cdf2_c0600ed2","line":113,"in_reply_to":"1ae5cdf2_11308e06","updated":"2014-06-17 02:18:56.000000000","message":"I added a couple more reasons derived from Salvatore\u0027s diatribe against splitting the timeline.","commit_id":"6e80bb25d4688fc88f27e7e8b20aeff9a4c0fc4f"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"6beaec79bd2037a77d50bd2bfd78d97a7139d0b9","unresolved":false,"context_lines":[{"line_number":116,"context_line":"Data model impact"},{"line_number":117,"context_line":"-----------------"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"Maybe some database models need to be updated in order to have non-conflicting"},{"line_number":120,"context_line":"models based on core and service plugins."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"1ae5cdf2_9111fe55","line":119,"updated":"2014-06-16 22:45:36.000000000","message":"(Suggestion only) Maybe some database models -\u003e Some database models may","commit_id":"6e80bb25d4688fc88f27e7e8b20aeff9a4c0fc4f"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"a334a625201b5e1a8fa9e64395e000442016e258","unresolved":false,"context_lines":[{"line_number":116,"context_line":"Data model impact"},{"line_number":117,"context_line":"-----------------"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"Maybe some database models need to be updated in order to have non-conflicting"},{"line_number":120,"context_line":"models based on core and service plugins."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"1ae5cdf2_209ff2b5","line":119,"in_reply_to":"1ae5cdf2_9111fe55","updated":"2014-06-17 02:18:56.000000000","message":"Done","commit_id":"6e80bb25d4688fc88f27e7e8b20aeff9a4c0fc4f"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"6beaec79bd2037a77d50bd2bfd78d97a7139d0b9","unresolved":false,"context_lines":[{"line_number":161,"context_line":"offline mode."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Downgrade of the healing migration does nothing. Thus all tables are present in"},{"line_number":164,"context_line":"the schema if downgrading from **db_healing** for newer."},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"Note: Greenfield deployment of the Juno release or later will start at the new"},{"line_number":167,"context_line":"migration timeline and therefore no healing will be involved."}],"source_content_type":"text/x-rst","patch_set":5,"id":"1ae5cdf2_51569607","line":164,"updated":"2014-06-16 22:45:36.000000000","message":"Is the end of this sentence \u0027for newer\u0027 intentional?  Consider removing it or replacing it with \u0027to a previous version\u0027.","commit_id":"6e80bb25d4688fc88f27e7e8b20aeff9a4c0fc4f"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"a334a625201b5e1a8fa9e64395e000442016e258","unresolved":false,"context_lines":[{"line_number":161,"context_line":"offline mode."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Downgrade of the healing migration does nothing. Thus all tables are present in"},{"line_number":164,"context_line":"the schema if downgrading from **db_healing** for newer."},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"Note: Greenfield deployment of the Juno release or later will start at the new"},{"line_number":167,"context_line":"migration timeline and therefore no healing will be involved."}],"source_content_type":"text/x-rst","patch_set":5,"id":"1ae5cdf2_80ad26ed","line":164,"in_reply_to":"1ae5cdf2_51569607","updated":"2014-06-17 02:18:56.000000000","message":"Done","commit_id":"6e80bb25d4688fc88f27e7e8b20aeff9a4c0fc4f"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"6beaec79bd2037a77d50bd2bfd78d97a7139d0b9","unresolved":false,"context_lines":[{"line_number":179,"context_line":"Most of the work lies in developing a robust healing migration. Alembic will be"},{"line_number":180,"context_line":"used where possible to maximize automation, but some healing may need to be"},{"line_number":181,"context_line":"manually coded. For example, a conflict could occur where two distinct"},{"line_number":182,"context_line":"migrations for two distinct plugins add an attribute with the same name but"},{"line_number":183,"context_line":"different type. This would require \u0027manual\u0027 healing to resolve the conflict."},{"line_number":184,"context_line":""},{"line_number":185,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"1ae5cdf2_516db6cb","line":182,"updated":"2014-06-16 22:45:36.000000000","message":"(Suggestion only) distinct -\u003e different","commit_id":"6e80bb25d4688fc88f27e7e8b20aeff9a4c0fc4f"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"a334a625201b5e1a8fa9e64395e000442016e258","unresolved":false,"context_lines":[{"line_number":179,"context_line":"Most of the work lies in developing a robust healing migration. Alembic will be"},{"line_number":180,"context_line":"used where possible to maximize automation, but some healing may need to be"},{"line_number":181,"context_line":"manually coded. For example, a conflict could occur where two distinct"},{"line_number":182,"context_line":"migrations for two distinct plugins add an attribute with the same name but"},{"line_number":183,"context_line":"different type. This would require \u0027manual\u0027 healing to resolve the conflict."},{"line_number":184,"context_line":""},{"line_number":185,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"1ae5cdf2_a0aa22d0","line":182,"in_reply_to":"1ae5cdf2_516db6cb","updated":"2014-06-17 02:18:56.000000000","message":"Done","commit_id":"6e80bb25d4688fc88f27e7e8b20aeff9a4c0fc4f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"1f229b6748ed7b40b3f3b7218b7a6864d2e8d951","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"3) All migrations after **db_healing** will be unconditional. This requires"},{"line_number":55,"context_line":"   updating the behavior of the --autogenerate for neutron-db-manage, and"},{"line_number":56,"context_line":"   documentation for developers."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"The healing migration will work like any other alembic migration, i.e. it will"},{"line_number":59,"context_line":"allow upgrade and downgrade. However, it will be different in the following"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ae5cdf2_535bf12d","line":56,"updated":"2014-06-17 06:47:13.000000000","message":"(Just a comment) We can change the \"--autogenerate\" template even before \"db_healing\" patch is merged. I would like to suggest to make the \"--autogenerate\" template unconditional for new tables in Juno. It is a policy change for review and needs to be discussed in the team meeting, but I believe it is worth considered.","commit_id":"add77fb53e20bcd4fd11fffa7aff56752396849e"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"eb8c1d008ce453ed08ed55dcc5be7fac6841a656","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"3) All migrations after **db_healing** will be unconditional. This requires"},{"line_number":55,"context_line":"   updating the behavior of the --autogenerate for neutron-db-manage, and"},{"line_number":56,"context_line":"   documentation for developers."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"The healing migration will work like any other alembic migration, i.e. it will"},{"line_number":59,"context_line":"allow upgrade and downgrade. However, it will be different in the following"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ae5cdf2_6881cf4c","line":56,"in_reply_to":"1ae5cdf2_535bf12d","updated":"2014-06-18 00:43:18.000000000","message":"Yes, I agree. I don\u0027t think we need to say here in the spec exactly when the --autogenerate template will change.","commit_id":"add77fb53e20bcd4fd11fffa7aff56752396849e"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"1f229b6748ed7b40b3f3b7218b7a6864d2e8d951","unresolved":false,"context_lines":[{"line_number":115,"context_line":"* It would not allow a downgrade via migration."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"* Switching from the old timeline to the new timeline is more a complex process"},{"line_number":118,"context_line":"  for the deployer and DBA than a simple migration in one timeline."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"* We would need to support two migration timelines in neutron until the"},{"line_number":121,"context_line":"  Icehouse release is deprecated."}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ae5cdf2_3011fb5d","line":118,"updated":"2014-06-17 06:47:13.000000000","message":"(suggestion only) Is DBA a common abbrev of \"DB administrator\"? Hopefully \"DB administrator\" to me.","commit_id":"add77fb53e20bcd4fd11fffa7aff56752396849e"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"eb8c1d008ce453ed08ed55dcc5be7fac6841a656","unresolved":false,"context_lines":[{"line_number":115,"context_line":"* It would not allow a downgrade via migration."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"* Switching from the old timeline to the new timeline is more a complex process"},{"line_number":118,"context_line":"  for the deployer and DBA than a simple migration in one timeline."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"* We would need to support two migration timelines in neutron until the"},{"line_number":121,"context_line":"  Icehouse release is deprecated."}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ae5cdf2_a87bd779","line":118,"in_reply_to":"1ae5cdf2_3011fb5d","updated":"2014-06-18 00:43:18.000000000","message":"I changed it anyway.","commit_id":"add77fb53e20bcd4fd11fffa7aff56752396849e"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"9ebc3b0950d8a438b737c88b84b9e0f18a5625c2","unresolved":false,"context_lines":[{"line_number":115,"context_line":"* It would not allow a downgrade via migration."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"* Switching from the old timeline to the new timeline is more a complex process"},{"line_number":118,"context_line":"  for the deployer and DBA than a simple migration in one timeline."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"* We would need to support two migration timelines in neutron until the"},{"line_number":121,"context_line":"  Icehouse release is deprecated."}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ae5cdf2_6e39c8a2","line":118,"in_reply_to":"1ae5cdf2_3011fb5d","updated":"2014-06-17 17:47:27.000000000","message":"Yes, the abbreviation DBA is commonly understood to be \u0027database administrator\u0027.","commit_id":"add77fb53e20bcd4fd11fffa7aff56752396849e"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"1f229b6748ed7b40b3f3b7218b7a6864d2e8d951","unresolved":false,"context_lines":[{"line_number":211,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"Unit (and functional?) testing of migrations shall be added. We plan to utilize"},{"line_number":214,"context_line":"the unit test framework from the incubated oslo.db package."},{"line_number":215,"context_line":""},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ae5cdf2_537211ae","line":214,"updated":"2014-06-17 06:47:13.000000000","message":"Nit: Isn\u0027t oslo.db a graduated project?","commit_id":"add77fb53e20bcd4fd11fffa7aff56752396849e"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"9ebc3b0950d8a438b737c88b84b9e0f18a5625c2","unresolved":false,"context_lines":[{"line_number":211,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"Unit (and functional?) testing of migrations shall be added. We plan to utilize"},{"line_number":214,"context_line":"the unit test framework from the incubated oslo.db package."},{"line_number":215,"context_line":""},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ae5cdf2_4ea08ca5","line":214,"in_reply_to":"1ae5cdf2_537211ae","updated":"2014-06-17 17:47:27.000000000","message":"It looks like it\u0027s scheduled to be graduated this cycle.\n\nReference: https://wiki.openstack.org/wiki/Oslo/GraduationStatus","commit_id":"add77fb53e20bcd4fd11fffa7aff56752396849e"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"eb8c1d008ce453ed08ed55dcc5be7fac6841a656","unresolved":false,"context_lines":[{"line_number":211,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"Unit (and functional?) testing of migrations shall be added. We plan to utilize"},{"line_number":214,"context_line":"the unit test framework from the incubated oslo.db package."},{"line_number":215,"context_line":""},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ae5cdf2_68e8ef16","line":214,"in_reply_to":"1ae5cdf2_537211ae","updated":"2014-06-18 00:43:18.000000000","message":"Thanks, I was not familiar with the oslo terminology.","commit_id":"add77fb53e20bcd4fd11fffa7aff56752396849e"},{"author":{"_account_id":11682,"name":"Ryan Moats","email":"rmoats@us.ibm.com","username":"regXboi"},"change_message_id":"1b56de57c99a86f02d7069c31c1b2e496419617c","unresolved":false,"context_lines":[{"line_number":41,"context_line":"This solution will introduce a \"healing\" migration that will call the DDLs"},{"line_number":42,"context_line":"needed to complete the database schema so that it contains all tables for all"},{"line_number":43,"context_line":"database models. This migration will occur in the timeline between the"},{"line_number":44,"context_line":"**icehouse_release** version and the **juno_release** version."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"The refactoring will comprise the following:"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1ae5cdf2_74540922","line":44,"updated":"2014-06-18 14:46:19.000000000","message":"Please clarify that this also includes all necessary column changes to already existing tables.","commit_id":"f76a75469b7b23eac61bacbec3a75c31b847b1de"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"07a8dc1c2be3ad0ebb72af935474ba3dff9ee7c4","unresolved":false,"context_lines":[{"line_number":41,"context_line":"This solution will introduce a \"healing\" migration that will call the DDLs"},{"line_number":42,"context_line":"needed to complete the database schema so that it contains all tables for all"},{"line_number":43,"context_line":"database models. This migration will occur in the timeline between the"},{"line_number":44,"context_line":"**icehouse_release** version and the **juno_release** version."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"The refactoring will comprise the following:"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1ae5cdf2_5792af57","line":44,"in_reply_to":"1ae5cdf2_74540922","updated":"2014-06-18 15:04:03.000000000","message":"Each existing table will be consistent with its model, since it was either created from the model, or by the migrations up to this point (which should be consistent with the model). There may be some conflicts, as mentioned in the \u0027Implementation\u0027 section at the end.","commit_id":"f76a75469b7b23eac61bacbec3a75c31b847b1de"},{"author":{"_account_id":11682,"name":"Ryan Moats","email":"rmoats@us.ibm.com","username":"regXboi"},"change_message_id":"1b56de57c99a86f02d7069c31c1b2e496419617c","unresolved":false,"context_lines":[{"line_number":62,"context_line":"* In the upgrade direction it will introspect the schema and only add tables"},{"line_number":63,"context_line":"  that are missing. Therefore it cannot be run in offline mode"},{"line_number":64,"context_line":"  (onlinedetails_)."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"* In the downgrade direction it will make no schema changes. This means it will"},{"line_number":67,"context_line":"  not remove any tables"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1ae5cdf2_545b8d53","line":65,"updated":"2014-06-18 14:46:19.000000000","message":"This is not sufficient - it is necessary to also include all table schema changes (i.e. column additions, etc).","commit_id":"f76a75469b7b23eac61bacbec3a75c31b847b1de"},{"author":{"_account_id":11682,"name":"Ryan Moats","email":"rmoats@us.ibm.com","username":"regXboi"},"change_message_id":"973d61ce324b359b1b9a607b08c922cff7ca4f8a","unresolved":false,"context_lines":[{"line_number":62,"context_line":"* In the upgrade direction it will introspect the schema and only add tables"},{"line_number":63,"context_line":"  that are missing. Therefore it cannot be run in offline mode"},{"line_number":64,"context_line":"  (onlinedetails_)."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"* In the downgrade direction it will make no schema changes. This means it will"},{"line_number":67,"context_line":"  not remove any tables"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1ae5cdf2_88733615","line":65,"in_reply_to":"1ae5cdf2_37260317","updated":"2014-06-18 16:02:47.000000000","message":"Please add that clarification to step #1.  As currently written, that is not immediately obvious.","commit_id":"f76a75469b7b23eac61bacbec3a75c31b847b1de"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"07a8dc1c2be3ad0ebb72af935474ba3dff9ee7c4","unresolved":false,"context_lines":[{"line_number":62,"context_line":"* In the upgrade direction it will introspect the schema and only add tables"},{"line_number":63,"context_line":"  that are missing. Therefore it cannot be run in offline mode"},{"line_number":64,"context_line":"  (onlinedetails_)."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"* In the downgrade direction it will make no schema changes. This means it will"},{"line_number":67,"context_line":"  not remove any tables"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1ae5cdf2_37260317","line":65,"in_reply_to":"1ae5cdf2_545b8d53","updated":"2014-06-18 15:04:03.000000000","message":"All table schema changes for existing tables will already be in place (either directly from the model, or from previous migrations). Each missing table that is added in this step will create its schema from the model.","commit_id":"f76a75469b7b23eac61bacbec3a75c31b847b1de"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"858d468844eb18f08831cdc963c130bc12c466b7","unresolved":false,"context_lines":[{"line_number":62,"context_line":"* In the upgrade direction it will introspect the schema and only add tables"},{"line_number":63,"context_line":"  that are missing. Therefore it cannot be run in offline mode"},{"line_number":64,"context_line":"  (onlinedetails_)."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"* In the downgrade direction it will make no schema changes. This means it will"},{"line_number":67,"context_line":"  not remove any tables"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1ae5cdf2_79e15a9a","line":65,"in_reply_to":"1ae5cdf2_88733615","updated":"2014-06-18 17:03:12.000000000","message":"I have tried to make it clear in patch set 8. Please take a look.","commit_id":"f76a75469b7b23eac61bacbec3a75c31b847b1de"},{"author":{"_account_id":11682,"name":"Ryan Moats","email":"rmoats@us.ibm.com","username":"regXboi"},"change_message_id":"973d61ce324b359b1b9a607b08c922cff7ca4f8a","unresolved":false,"context_lines":[{"line_number":70,"context_line":"through the healing migration, the schema will contain tables that were not"},{"line_number":71,"context_line":"present before. In other words, if a deployment downgrades back to Icehouse or"},{"line_number":72,"context_line":"Havana, Neutron will appear and behave as before, yet if you look at the DB it"},{"line_number":73,"context_line":"is not the old Icehouse or Havana DB but a healed one."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"Note: the healing migration may need to alter some tables. We won\u0027t know for"},{"line_number":76,"context_line":"sure until the proposed implementation is tested in more detail. These"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1ae5cdf2_c374419e","line":73,"updated":"2014-06-18 16:02:47.000000000","message":"What happens after a downgrade if the healing migration requires manual coding changes to resolve conflicts?","commit_id":"f76a75469b7b23eac61bacbec3a75c31b847b1de"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"858d468844eb18f08831cdc963c130bc12c466b7","unresolved":false,"context_lines":[{"line_number":70,"context_line":"through the healing migration, the schema will contain tables that were not"},{"line_number":71,"context_line":"present before. In other words, if a deployment downgrades back to Icehouse or"},{"line_number":72,"context_line":"Havana, Neutron will appear and behave as before, yet if you look at the DB it"},{"line_number":73,"context_line":"is not the old Icehouse or Havana DB but a healed one."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"Note: the healing migration may need to alter some tables. We won\u0027t know for"},{"line_number":76,"context_line":"sure until the proposed implementation is tested in more detail. These"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1ae5cdf2_798f9acd","line":73,"in_reply_to":"1ae5cdf2_c374419e","updated":"2014-06-18 17:03:12.000000000","message":"Good question. I will express my take on this in patch set 8, but I have not discussed it with anyone yet.","commit_id":"f76a75469b7b23eac61bacbec3a75c31b847b1de"},{"author":{"_account_id":11682,"name":"Ryan Moats","email":"rmoats@us.ibm.com","username":"regXboi"},"change_message_id":"973d61ce324b359b1b9a607b08c922cff7ca4f8a","unresolved":false,"context_lines":[{"line_number":188,"context_line":"used where possible to maximize automation, but some healing may need to be"},{"line_number":189,"context_line":"manually coded. For example, a conflict could occur where two distinct"},{"line_number":190,"context_line":"migrations for two different plugins add an attribute with the same name but"},{"line_number":191,"context_line":"different type. This would require \u0027manual\u0027 healing to resolve the conflict."},{"line_number":192,"context_line":""},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"Assignee(s)"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1ae5cdf2_8319597c","line":191,"updated":"2014-06-18 16:02:47.000000000","message":"If changing plugin code is out-of-scope, how is it envisioned that this will be accomplished, or Is it correct to infer that this manual coding will possibly include changing the plugins?","commit_id":"f76a75469b7b23eac61bacbec3a75c31b847b1de"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"858d468844eb18f08831cdc963c130bc12c466b7","unresolved":false,"context_lines":[{"line_number":188,"context_line":"used where possible to maximize automation, but some healing may need to be"},{"line_number":189,"context_line":"manually coded. For example, a conflict could occur where two distinct"},{"line_number":190,"context_line":"migrations for two different plugins add an attribute with the same name but"},{"line_number":191,"context_line":"different type. This would require \u0027manual\u0027 healing to resolve the conflict."},{"line_number":192,"context_line":""},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"Assignee(s)"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1ae5cdf2_dd74199e","line":191,"in_reply_to":"1ae5cdf2_8319597c","updated":"2014-06-18 17:03:12.000000000","message":"I believe that changing the plugins is not desirable, but I could be wrong. My current thought is that the downgrade should put the DB in a \u0027usable\u0027 state, i.e. reverse any manual conflict healings that cause conflicts with earlier versions.","commit_id":"f76a75469b7b23eac61bacbec3a75c31b847b1de"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"a22e2f08a1631b186dd507501112e2a258b4ca33","unresolved":false,"context_lines":[{"line_number":216,"context_line":"  the same name but different type."},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"* If an ENUM was modified in an earlier migration but its specification was not"},{"line_number":219,"context_line":"  updated for PostGreSQL."},{"line_number":220,"context_line":""},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"Assignee(s)"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1ae5cdf2_63ca8850","line":219,"range":{"start_line":219,"start_character":14,"end_line":219,"end_character":24},"updated":"2014-06-18 18:05:53.000000000","message":"PostgreSQL","commit_id":"303288f613eafe1a6e868c948e281df14ea7c514"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"cdb0f706a30f845d73f72c287de4f22850281a91","unresolved":false,"context_lines":[{"line_number":216,"context_line":"  the same name but different type."},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"* If an ENUM was modified in an earlier migration but its specification was not"},{"line_number":219,"context_line":"  updated for PostGreSQL."},{"line_number":220,"context_line":""},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"Assignee(s)"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1ae5cdf2_86096233","line":219,"in_reply_to":"1ae5cdf2_63ca8850","updated":"2014-06-18 18:38:24.000000000","message":"Done","commit_id":"303288f613eafe1a6e868c948e281df14ea7c514"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"0723c55560605b162af80103db41ff7cc8618e27","unresolved":false,"context_lines":[{"line_number":52,"context_line":"   consistent. The version will be named **db_healing**."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"3) All migrations after **db_healing** will be unconditional. This requires"},{"line_number":55,"context_line":"   updating the behavior of the --autogenerate for neutron-db-manage, and"},{"line_number":56,"context_line":"   documentation for developers."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"The healing migration will work like any other alembic migration, i.e. it will"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ae5cdf2_ef5ea078","line":55,"updated":"2014-06-25 14:17:21.000000000","message":"Actually we\u0027ll just be update neutron-db-manage to not conditionally run migrations.  As for auto generate to work, we won\u0027t actually be changing it as much as ensure all models are loaded so that auto generate finds them.","commit_id":"795ec264171534cbc7d8b55b390e4952f010d39f"}]}
