)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"288af6d4df19ee8db0ec33be01d3c35a383f61b3","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This adds an alembic migration script which will block a db_sync"},{"line_number":10,"context_line":"if the online data migration has not been run."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"WIP since tests are tricky..."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I74c49d286dfc62f49af24303ed1cb18489e7e89d"},{"line_number":15,"context_line":"Story: 2005613"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"dfbec78f_e0f33b09","line":12,"updated":"2019-05-09 18:52:30.000000000","message":"The migration check does fail if I do this:\n\nosboxes@osboxes:~/git/placement$ git diff\ndiff --git a/placement/db/sqlalchemy/alembic/versions/611cd6dffd7b_block_on_null_root_provider_id.py b/placement/db/sqlalchemy/alembic/versions/611cd6dffd7b_block_on_null_root_provider_id.py\nindex 06058a01..50acfbc9 100644\n--- a/placement/db/sqlalchemy/alembic/versions/611cd6dffd7b_block_on_null_root_provider_id.py\n+++ b/placement/db/sqlalchemy/alembic/versions/611cd6dffd7b_block_on_null_root_provider_id.py\n@@ -33,6 +33,17 @@ def upgrade():\n     connection \u003d context.get_bind()\n     metadata \u003d MetaData(bind\u003dconnection)\n     resource_providers \u003d Table(\u0027resource_providers\u0027, metadata, autoload\u003dTrue)\n+\n+    ins_stmt1 \u003d resource_providers.insert().values(\n+        id\u003d1,\n+        uuid\u003d\u0027abfb88c2-4804-4453-850b-e2e7ea8d2170\u0027,\n+        name\u003d\u0027rp-1\u0027,\n+        root_provider_id\u003dNone,\n+        parent_provider_id\u003dNone,\n+        generation\u003d42,\n+    )\n+    connection.execute(ins_stmt1)\n+\n     query \u003d select([sqlfunc.count()]).select_from(resource_providers).where(\n         resource_providers.c.root_provider_id \u003d\u003d sa.null())\n     if connection.scalar(query):\nosboxes@osboxes:~/git/placement$ \n\n\n    b\u0027  File \"/home/osboxes/git/placement/placement/db/sqlalchemy/alembic/env.py\", line 62, in run_migrations_online\u0027\n    b\u0027    context.run_migrations()\u0027\n    b\u0027  File \"\u003cstring\u003e\", line 8, in run_migrations\u0027\n    b\u0027  File \"/home/osboxes/git/placement/.tox/py36/lib/python3.6/site-packages/alembic/runtime/environment.py\", line 839, in run_migrations\u0027\n    b\u0027    self.get_context().run_migrations(**kw)\u0027\n    b\u0027  File \"/home/osboxes/git/placement/.tox/py36/lib/python3.6/site-packages/alembic/runtime/migration.py\", line 361, in run_migrations\u0027\n    b\u0027    step.migration_fn(**kw)\u0027\n    b\u0027  File \"/home/osboxes/git/placement/placement/db/sqlalchemy/alembic/versions/611cd6dffd7b_block_on_null_root_provider_id.py\", line 50, in upgrade\u0027\n    b\"    raise Exception(\u0027There is at least one resource provider table \u0027\"\n    b\u0027Exception: There is at least one resource provider table record which misses its root provider id. Run the \"placement-manage db online_data_migrations\" command.\u0027\n    b\u0027\u0027","commit_id":"07cbce8e857b31b901d7801db2928a0f0439ace9"}],"placement/db/sqlalchemy/alembic/versions/611cd6dffd7b_block_on_null_root_provider_id.py":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"44608ff260027b20f56ef14db15d668b7c0c4744","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        resource_providers.c.root_provider_id \u003d\u003d sa.null())"},{"line_number":38,"context_line":"    if connection.scalar(query):"},{"line_number":39,"context_line":"        raise Exception(\u0027There is at least one resource provider table \u0027"},{"line_number":40,"context_line":"                        \u0027record which misses its root provider id. \u0027"},{"line_number":41,"context_line":"                        \u0027Run the \"placement-manage db \u0027"},{"line_number":42,"context_line":"                        \u0027online_data_migrations\" command.\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"dfbec78f_3ecad36c","line":40,"range":{"start_line":40,"start_character":38,"end_line":40,"end_character":44},"updated":"2019-05-09 21:48:13.000000000","message":"\"is missing\" ?","commit_id":"07cbce8e857b31b901d7801db2928a0f0439ace9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3fea4476ff9f440d84e88faa6a5b91e77b1492e9","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        resource_providers.c.root_provider_id \u003d\u003d sa.null())"},{"line_number":38,"context_line":"    if connection.scalar(query):"},{"line_number":39,"context_line":"        raise Exception(\u0027There is at least one resource provider table \u0027"},{"line_number":40,"context_line":"                        \u0027record which misses its root provider id. \u0027"},{"line_number":41,"context_line":"                        \u0027Run the \"placement-manage db \u0027"},{"line_number":42,"context_line":"                        \u0027online_data_migrations\" command.\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"dfbec78f_2e037411","line":40,"range":{"start_line":40,"start_character":38,"end_line":40,"end_character":44},"in_reply_to":"dfbec78f_3ecad36c","updated":"2019-05-10 13:31:18.000000000","message":"Sure, I just copied this from the placement-status upgrade check.","commit_id":"07cbce8e857b31b901d7801db2928a0f0439ace9"}],"placement/tests/functional/db/test_migrations.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"74aeb4bbc5802f8de4917c72acfb99d33fb7aa33","unresolved":false,"context_lines":[{"line_number":191,"context_line":"            values\u003d{\u0027root_provider_id\u0027: rp_id}).where("},{"line_number":192,"context_line":"            rps.c.id \u003d\u003d rp_id).execute()"},{"line_number":193,"context_line":"        # Re-run the upgrade and it should be OK."},{"line_number":194,"context_line":"        self.migration_api.upgrade(\u0027611cd6dffd7b\u0027)"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"class PlacementOpportunisticFixture(object):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfb3d3c7_b2db64eb","line":194,"updated":"2019-05-22 21:02:25.000000000","message":"++","commit_id":"4606e55d1912c29348b49dfa42e0d7792f77f638"}]}
