)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"00ca7d8011cd3cc8750e134616b9ef267eb883a0","unresolved":false,"context_lines":[{"line_number":10,"context_line":"the keystone core migrations path. Check to see if the migration was"},{"line_number":11,"context_line":"performed already via the extension and if so skip performing it again."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"DocImpact"},{"line_number":14,"context_line":"Co-Authored-By: Jamie Lennox \u003cjamielennox@redhat.com\u003e"},{"line_number":15,"context_line":"Partially implements: bp move-extensions"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":24,"id":"da85f559_0b426768","line":13,"updated":"2015-11-11 16:12:42.000000000","message":"add to the DocImpact tag saying that uses no longer need to run the endpoint_filter extension migrations (similar to previous patches).","commit_id":"7be78b5a1cd2fa2355f364b07a5f45c4b7f453f3"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"fd5fac22e32ad0c8a5dbb4f51744ab2fe6ed3db3","unresolved":false,"context_lines":[{"line_number":10,"context_line":"the keystone core migrations path. Check to see if the migration was"},{"line_number":11,"context_line":"performed already via the extension and if so skip performing it again."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"DocImpact"},{"line_number":14,"context_line":"Co-Authored-By: Jamie Lennox \u003cjamielennox@redhat.com\u003e"},{"line_number":15,"context_line":"Partially implements: bp move-extensions"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":24,"id":"ba8a016a_7f7a0df3","line":13,"in_reply_to":"da85f559_0b426768","updated":"2015-11-18 03:30:17.000000000","message":"Done","commit_id":"7be78b5a1cd2fa2355f364b07a5f45c4b7f453f3"}],"keystone/common/sql/migrate_repo/versions/073_add_endpoint_filtering_table.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"44379b83640843064db91d0261cffbb4a39de648","unresolved":false,"context_lines":[{"line_number":10,"context_line":"# distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\r"},{"line_number":11,"context_line":"# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\r"},{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations\r"},{"line_number":13,"context_line":"# under the License.\r"},{"line_number":14,"context_line":"\r"},{"line_number":15,"context_line":"import sqlalchemy as sql\r"},{"line_number":16,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_23e628e8","line":13,"updated":"2015-06-10 21:23:18.000000000","message":"strange formatting?","commit_id":"0bf8a6cd1d867e0215a24674bd7b49a1d9eb4806"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"c4902d5910ee4dc891bb4a358613587310406358","unresolved":false,"context_lines":[{"line_number":10,"context_line":"# distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\r"},{"line_number":11,"context_line":"# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\r"},{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations\r"},{"line_number":13,"context_line":"# under the License.\r"},{"line_number":14,"context_line":"\r"},{"line_number":15,"context_line":"import sqlalchemy as sql\r"},{"line_number":16,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_2a05d40f","line":13,"in_reply_to":"3afb71cf_23e628e8","updated":"2015-06-12 03:06:38.000000000","message":"Done","commit_id":"0bf8a6cd1d867e0215a24674bd7b49a1d9eb4806"}],"keystone/common/sql/migrate_repo/versions/074_add_endpoint_groups.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"44379b83640843064db91d0261cffbb4a39de648","unresolved":false,"context_lines":[{"line_number":10,"context_line":"# distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\r"},{"line_number":11,"context_line":"# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\r"},{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations\r"},{"line_number":13,"context_line":"# under the License.\r"},{"line_number":14,"context_line":"\r"},{"line_number":15,"context_line":"import sqlalchemy as sql\r"},{"line_number":16,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_a3da1815","line":13,"updated":"2015-06-10 21:23:18.000000000","message":"same comment here.","commit_id":"0bf8a6cd1d867e0215a24674bd7b49a1d9eb4806"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"c4902d5910ee4dc891bb4a358613587310406358","unresolved":false,"context_lines":[{"line_number":10,"context_line":"# distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\r"},{"line_number":11,"context_line":"# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\r"},{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations\r"},{"line_number":13,"context_line":"# under the License.\r"},{"line_number":14,"context_line":"\r"},{"line_number":15,"context_line":"import sqlalchemy as sql\r"},{"line_number":16,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_4a02500b","line":13,"in_reply_to":"3afb71cf_a3da1815","updated":"2015-06-12 03:06:38.000000000","message":"Done","commit_id":"0bf8a6cd1d867e0215a24674bd7b49a1d9eb4806"},{"author":{"_account_id":16523,"name":"ZhangLei","display_name":"ZhangLei","email":"zhang.lei@99cloud.net","username":"zhang.lei"},"change_message_id":"18008df68d26613b978b87dfb52d0da20c0b17f2","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# under the License.\r"},{"line_number":14,"context_line":"\r"},{"line_number":15,"context_line":"import sqlalchemy as sql\r"},{"line_number":16,"context_line":"\r"},{"line_number":17,"context_line":"from keystone.common.sql import migration_helpers\r"},{"line_number":18,"context_line":"\r"},{"line_number":19,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_6a662cbc","line":16,"updated":"2015-06-11 01:45:22.000000000","message":"\\r ?","commit_id":"0bf8a6cd1d867e0215a24674bd7b49a1d9eb4806"}],"keystone/common/sql/migrate_repo/versions/075_add_endpoint_filtering_table.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"db97f2bdde44c5f900b3c8c3489ed869d6434896","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2013 OpenStack Foundation"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa1b9901_1efbad7c","line":1,"updated":"2015-08-25 14:59:59.000000000","message":"wrong year?","commit_id":"29e86981518b5871a027fbabde646fc56bc2490b"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"9d026df64d71fc8781b22a16fb16f6fe1123550f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2013 OpenStack Foundation"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa1b9901_9bdb2b7c","line":1,"in_reply_to":"fa1b9901_1efbad7c","updated":"2015-08-26 06:32:33.000000000","message":"Done","commit_id":"29e86981518b5871a027fbabde646fc56bc2490b"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"db97f2bdde44c5f900b3c8c3489ed869d6434896","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"def upgrade(migrate_engine):"},{"line_number":21,"context_line":"    try:"},{"line_number":22,"context_line":"        extension_version \u003d migration_helpers.get_db_version("},{"line_number":23,"context_line":"            extension\u003d\u0027endpoint_filter\u0027,"},{"line_number":24,"context_line":"            engine\u003dmigrate_engine)"},{"line_number":25,"context_line":"    except Exception:"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa1b9901_de5f753f","line":22,"updated":"2015-08-25 14:59:59.000000000","message":"As we move more extensions into core, I can see this code getting copy-pasted into a bunch of different migrations. Maybe it would be useful to pull it out in to a common place?","commit_id":"29e86981518b5871a027fbabde646fc56bc2490b"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"9d026df64d71fc8781b22a16fb16f6fe1123550f","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"def upgrade(migrate_engine):"},{"line_number":21,"context_line":"    try:"},{"line_number":22,"context_line":"        extension_version \u003d migration_helpers.get_db_version("},{"line_number":23,"context_line":"            extension\u003d\u0027endpoint_filter\u0027,"},{"line_number":24,"context_line":"            engine\u003dmigrate_engine)"},{"line_number":25,"context_line":"    except Exception:"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa1b9901_3b69bf8c","line":22,"in_reply_to":"fa1b9901_de5f753f","updated":"2015-08-26 06:32:33.000000000","message":"this is already a function encapsulated in migration_helpers, entension name is definitely different, thus, need to passed by the caller.","commit_id":"29e86981518b5871a027fbabde646fc56bc2490b"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"db97f2bdde44c5f900b3c8c3489ed869d6434896","unresolved":false,"context_lines":[{"line_number":23,"context_line":"            extension\u003d\u0027endpoint_filter\u0027,"},{"line_number":24,"context_line":"            engine\u003dmigrate_engine)"},{"line_number":25,"context_line":"    except Exception:"},{"line_number":26,"context_line":"        extension_version \u003d 0"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    # This extension corresponds to endpoint_filter extension migration 1. Only"},{"line_number":29,"context_line":"    # update if it has not been run."}],"source_content_type":"text/x-python","patch_set":12,"id":"fa1b9901_bef6415b","line":26,"updated":"2015-08-25 14:59:59.000000000","message":"is this going to conflict with \n\nhttps://review.openstack.org/#/c/171916/13/keystone/common/sql/migrate_repo/versions/073_add_endpoint_policy_table.py","commit_id":"29e86981518b5871a027fbabde646fc56bc2490b"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"540ab01545e24def31d6ed1d83f9d24ff72c2e7f","unresolved":false,"context_lines":[{"line_number":23,"context_line":"            extension\u003d\u0027endpoint_filter\u0027,"},{"line_number":24,"context_line":"            engine\u003dmigrate_engine)"},{"line_number":25,"context_line":"    except Exception:"},{"line_number":26,"context_line":"        extension_version \u003d 0"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    # This extension corresponds to endpoint_filter extension migration 1. Only"},{"line_number":29,"context_line":"    # update if it has not been run."}],"source_content_type":"text/x-python","patch_set":12,"id":"fa1b9901_1b4b8a88","line":26,"in_reply_to":"fa1b9901_1ba71bbe","updated":"2015-08-26 12:46:43.000000000","message":"I think I misread something. Thanks for the explanation.","commit_id":"29e86981518b5871a027fbabde646fc56bc2490b"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"9d026df64d71fc8781b22a16fb16f6fe1123550f","unresolved":false,"context_lines":[{"line_number":23,"context_line":"            extension\u003d\u0027endpoint_filter\u0027,"},{"line_number":24,"context_line":"            engine\u003dmigrate_engine)"},{"line_number":25,"context_line":"    except Exception:"},{"line_number":26,"context_line":"        extension_version \u003d 0"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    # This extension corresponds to endpoint_filter extension migration 1. Only"},{"line_number":29,"context_line":"    # update if it has not been run."}],"source_content_type":"text/x-python","patch_set":12,"id":"fa1b9901_1ba71bbe","line":26,"in_reply_to":"fa1b9901_bef6415b","updated":"2015-08-26 06:32:33.000000000","message":"seen from the rest of the code, \u0027extension_version\u0027 just works as a flag, when table \u0027project_endpoint\u0027 existing, there is no need to create the table again. 1 and 2 map to \u0027001_add_endpoint_filtering_table.py\u0027 and  \u0027002_add_endpoint_groups.py\u0027 respectively.\n\nIs \u0027extension_version just a local env, how does this conflict with a different migration?","commit_id":"29e86981518b5871a027fbabde646fc56bc2490b"}],"keystone/common/sql/migrate_repo/versions/076_add_endpoint_groups.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"db97f2bdde44c5f900b3c8c3489ed869d6434896","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    project_endpoint_group_table \u003d sql.Table("},{"line_number":48,"context_line":"        \u0027project_endpoint_group\u0027,"},{"line_number":49,"context_line":"        meta,"},{"line_number":50,"context_line":"        sql.Column(\u0027endpoint_group_id\u0027, sql.String(64),"},{"line_number":51,"context_line":"                   sql.ForeignKey(\u0027endpoint_group.id\u0027), nullable\u003dFalse),"},{"line_number":52,"context_line":"        sql.Column(\u0027project_id\u0027, sql.String(64), nullable\u003dFalse),"},{"line_number":53,"context_line":"        sql.PrimaryKeyConstraint(\u0027endpoint_group_id\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa1b9901_f9113353","line":50,"updated":"2015-08-25 14:59:59.000000000","message":"\u0027endpoint_group_id\u0027 is used in a few different places, it could be pulled out into a variable.","commit_id":"29e86981518b5871a027fbabde646fc56bc2490b"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"9d026df64d71fc8781b22a16fb16f6fe1123550f","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    project_endpoint_group_table \u003d sql.Table("},{"line_number":48,"context_line":"        \u0027project_endpoint_group\u0027,"},{"line_number":49,"context_line":"        meta,"},{"line_number":50,"context_line":"        sql.Column(\u0027endpoint_group_id\u0027, sql.String(64),"},{"line_number":51,"context_line":"                   sql.ForeignKey(\u0027endpoint_group.id\u0027), nullable\u003dFalse),"},{"line_number":52,"context_line":"        sql.Column(\u0027project_id\u0027, sql.String(64), nullable\u003dFalse),"},{"line_number":53,"context_line":"        sql.PrimaryKeyConstraint(\u0027endpoint_group_id\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa1b9901_bbe4efa7","line":50,"in_reply_to":"fa1b9901_f9113353","updated":"2015-08-26 06:32:33.000000000","message":"Done","commit_id":"29e86981518b5871a027fbabde646fc56bc2490b"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"db97f2bdde44c5f900b3c8c3489ed869d6434896","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        meta,"},{"line_number":50,"context_line":"        sql.Column(\u0027endpoint_group_id\u0027, sql.String(64),"},{"line_number":51,"context_line":"                   sql.ForeignKey(\u0027endpoint_group.id\u0027), nullable\u003dFalse),"},{"line_number":52,"context_line":"        sql.Column(\u0027project_id\u0027, sql.String(64), nullable\u003dFalse),"},{"line_number":53,"context_line":"        sql.PrimaryKeyConstraint(\u0027endpoint_group_id\u0027,"},{"line_number":54,"context_line":"                                 \u0027project_id\u0027))"},{"line_number":55,"context_line":"    project_endpoint_group_table.create(migrate_engine, checkfirst\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa1b9901_5927ffb5","line":52,"updated":"2015-08-25 14:59:59.000000000","message":"same comment here with \u0027project_id\u0027","commit_id":"29e86981518b5871a027fbabde646fc56bc2490b"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"9d026df64d71fc8781b22a16fb16f6fe1123550f","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        meta,"},{"line_number":50,"context_line":"        sql.Column(\u0027endpoint_group_id\u0027, sql.String(64),"},{"line_number":51,"context_line":"                   sql.ForeignKey(\u0027endpoint_group.id\u0027), nullable\u003dFalse),"},{"line_number":52,"context_line":"        sql.Column(\u0027project_id\u0027, sql.String(64), nullable\u003dFalse),"},{"line_number":53,"context_line":"        sql.PrimaryKeyConstraint(\u0027endpoint_group_id\u0027,"},{"line_number":54,"context_line":"                                 \u0027project_id\u0027))"},{"line_number":55,"context_line":"    project_endpoint_group_table.create(migrate_engine, checkfirst\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa1b9901_dbe9a380","line":52,"in_reply_to":"fa1b9901_5927ffb5","updated":"2015-08-26 06:32:33.000000000","message":"Done","commit_id":"29e86981518b5871a027fbabde646fc56bc2490b"}],"keystone/common/sql/migrate_repo/versions/086_add_endpoint_groups.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"9b103e3c342b81402506f6cc935ec522c8efdde0","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    EP_GROUP_ID \u003d \u0027endpoint_group_id\u0027"},{"line_number":39,"context_line":"    PROJECT_ID \u003d \u0027project_id\u0027"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    endpoint_group_table \u003d sql.Table("},{"line_number":42,"context_line":"        \u0027endpoint_group\u0027,"},{"line_number":43,"context_line":"        meta,"},{"line_number":44,"context_line":"        sql.Column(\u0027id\u0027, sql.String(64), primary_key\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":18,"id":"3a29b11f_7e133e5d","line":41,"updated":"2015-10-18 01:35:28.000000000","message":"we could move these into 085, no need to have 2 migration scripts","commit_id":"85b0bc860fad2005bfa4d726e946880922e81d8a"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"9e021f3e5be674315c194f2ff94fa94d18077738","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    EP_GROUP_ID \u003d \u0027endpoint_group_id\u0027"},{"line_number":39,"context_line":"    PROJECT_ID \u003d \u0027project_id\u0027"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    endpoint_group_table \u003d sql.Table("},{"line_number":42,"context_line":"        \u0027endpoint_group\u0027,"},{"line_number":43,"context_line":"        meta,"},{"line_number":44,"context_line":"        sql.Column(\u0027id\u0027, sql.String(64), primary_key\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":18,"id":"3a29b11f_bad8f7f0","line":41,"in_reply_to":"3a29b11f_7e133e5d","updated":"2015-10-19 03:36:54.000000000","message":"sure.","commit_id":"85b0bc860fad2005bfa4d726e946880922e81d8a"}],"keystone/common/sql/migration_helpers.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"44379b83640843064db91d0261cffbb4a39de648","unresolved":false,"context_lines":[{"line_number":141,"context_line":""},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"def migration_moved_failure(extension):"},{"line_number":144,"context_line":"    raise RuntimeError(_(\"The %s extension has been moved into keystone\""},{"line_number":145,"context_line":"                         \"core and such it\u0027s migrations are maintained by \""},{"line_number":146,"context_line":"                         \"the main keystone database control.\") % extension)"},{"line_number":147,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_c3f6348e","line":144,"updated":"2015-06-10 21:23:18.000000000","message":"Keystone*","commit_id":"0bf8a6cd1d867e0215a24674bd7b49a1d9eb4806"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"c4902d5910ee4dc891bb4a358613587310406358","unresolved":false,"context_lines":[{"line_number":141,"context_line":""},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"def migration_moved_failure(extension):"},{"line_number":144,"context_line":"    raise RuntimeError(_(\"The %s extension has been moved into keystone\""},{"line_number":145,"context_line":"                         \"core and such it\u0027s migrations are maintained by \""},{"line_number":146,"context_line":"                         \"the main keystone database control.\") % extension)"},{"line_number":147,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_c70f5935","line":144,"in_reply_to":"3afb71cf_c3f6348e","updated":"2015-06-12 03:06:38.000000000","message":"Ah, I did it intentionally, see: https://wiki.openstack.org/wiki/Documentation/Conventions","commit_id":"0bf8a6cd1d867e0215a24674bd7b49a1d9eb4806"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"44379b83640843064db91d0261cffbb4a39de648","unresolved":false,"context_lines":[{"line_number":143,"context_line":"def migration_moved_failure(extension):"},{"line_number":144,"context_line":"    raise RuntimeError(_(\"The %s extension has been moved into keystone\""},{"line_number":145,"context_line":"                         \"core and such it\u0027s migrations are maintained by \""},{"line_number":146,"context_line":"                         \"the main keystone database control.\") % extension)"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"def _sync_common_repo(version):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_2334e847","line":146,"updated":"2015-06-10 21:23:18.000000000","message":"Keystone*","commit_id":"0bf8a6cd1d867e0215a24674bd7b49a1d9eb4806"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"c4902d5910ee4dc891bb4a358613587310406358","unresolved":false,"context_lines":[{"line_number":143,"context_line":"def migration_moved_failure(extension):"},{"line_number":144,"context_line":"    raise RuntimeError(_(\"The %s extension has been moved into keystone\""},{"line_number":145,"context_line":"                         \"core and such it\u0027s migrations are maintained by \""},{"line_number":146,"context_line":"                         \"the main keystone database control.\") % extension)"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"def _sync_common_repo(version):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_6700a502","line":146,"in_reply_to":"3afb71cf_2334e847","updated":"2015-06-12 03:06:38.000000000","message":"same here","commit_id":"0bf8a6cd1d867e0215a24674bd7b49a1d9eb4806"},{"author":{"_account_id":16523,"name":"ZhangLei","display_name":"ZhangLei","email":"zhang.lei@99cloud.net","username":"zhang.lei"},"change_message_id":"18008df68d26613b978b87dfb52d0da20c0b17f2","unresolved":false,"context_lines":[{"line_number":260,"context_line":""},{"line_number":261,"context_line":"def get_db_version(extension\u003dNone, engine\u003dNone):"},{"line_number":262,"context_line":"    if not engine:"},{"line_number":263,"context_line":"        engine \u003d sql.get_engine()"},{"line_number":264,"context_line":"    if not extension:"},{"line_number":265,"context_line":"        return migration.db_version(sql.get_engine(), find_migrate_repo(),"},{"line_number":266,"context_line":"                                    migrate_repo.DB_INIT_VERSION)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_0a57b8ca","line":263,"updated":"2015-06-11 01:45:22.000000000","message":"what\u0027s the meaning of this change ?","commit_id":"0bf8a6cd1d867e0215a24674bd7b49a1d9eb4806"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"c4902d5910ee4dc891bb4a358613587310406358","unresolved":false,"context_lines":[{"line_number":260,"context_line":""},{"line_number":261,"context_line":"def get_db_version(extension\u003dNone, engine\u003dNone):"},{"line_number":262,"context_line":"    if not engine:"},{"line_number":263,"context_line":"        engine \u003d sql.get_engine()"},{"line_number":264,"context_line":"    if not extension:"},{"line_number":265,"context_line":"        return migration.db_version(sql.get_engine(), find_migrate_repo(),"},{"line_number":266,"context_line":"                                    migrate_repo.DB_INIT_VERSION)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1af86dd1_4f0360b9","line":263,"in_reply_to":"3afb71cf_0a57b8ca","updated":"2015-06-12 03:06:38.000000000","message":"pls check 073_add_endpoint_filtering_table.py, we need migrate_engine there.","commit_id":"0bf8a6cd1d867e0215a24674bd7b49a1d9eb4806"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"9b103e3c342b81402506f6cc935ec522c8efdde0","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"CONF \u003d cfg.CONF"},{"line_number":37,"context_line":"DEFAULT_EXTENSIONS \u003d [\u0027endpoint_filter\u0027,"},{"line_number":38,"context_line":"                      ]"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"MIGRATED_EXTENSIONS \u003d [\u0027endpoint_policy\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"3a29b11f_3e1dc666","line":37,"updated":"2015-10-18 01:35:28.000000000","message":"remove from here, set DEFAULT_EXTENSIONS to an empty list","commit_id":"85b0bc860fad2005bfa4d726e946880922e81d8a"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"9e021f3e5be674315c194f2ff94fa94d18077738","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"CONF \u003d cfg.CONF"},{"line_number":37,"context_line":"DEFAULT_EXTENSIONS \u003d [\u0027endpoint_filter\u0027,"},{"line_number":38,"context_line":"                      ]"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"MIGRATED_EXTENSIONS \u003d [\u0027endpoint_policy\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"3a29b11f_dad053cc","line":37,"in_reply_to":"3a29b11f_3e1dc666","updated":"2015-10-19 03:36:54.000000000","message":"Done","commit_id":"85b0bc860fad2005bfa4d726e946880922e81d8a"}],"keystone/tests/unit/test_sql_migrate_extensions.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"4cdf0b459b391ecf19eb82a6e88022b94d2b179b","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"class FederationExtension(test_sql_upgrade.SqlMigrateBase):"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    FEDERATION_MIGRATIONS \u003d 8"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def repo_package(self):"}],"source_content_type":"text/x-python","patch_set":27,"id":"ba8a016a_94c2f632","line":88,"updated":"2015-11-19 04:57:10.000000000","message":"we should clean up this file to declare the rest of the magic numbers like this","commit_id":"cef3867bde72024b571c9691039226d717885776"}],"keystone/tests/unit/test_sql_upgrade.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"13ca2101512d28a59c329db75539ffc199e608c0","unresolved":false,"context_lines":[{"line_number":636,"context_line":"                                 \u0027enabled\u0027, \u0027domain_id\u0027, \u0027parent_id\u0027,"},{"line_number":637,"context_line":"                                 \u0027is_domain\u0027])"},{"line_number":638,"context_line":""},{"line_number":639,"context_line":"    def _assert_v1_tables(self):"},{"line_number":640,"context_line":"        self.assertTableColumns(\u0027project_endpoint\u0027,"},{"line_number":641,"context_line":"                                [\u0027endpoint_id\u0027, \u0027project_id\u0027])"},{"line_number":642,"context_line":"        self.assertTableDoesNotExist(\u0027endpoint_group\u0027)"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa1b9901_3e32fca7","line":639,"updated":"2015-08-26 12:54:07.000000000","message":"if this is only ever going to be used in test_endpoint_filter_upgrade, it could probably just live within the context of that test?","commit_id":"4a20a54ddef3b2eaa8f9ca4eb1025d91d0eb4c6d"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"a6b3d444c37dc02ba0bf427539fbbaa77572eb0e","unresolved":false,"context_lines":[{"line_number":636,"context_line":"                                 \u0027enabled\u0027, \u0027domain_id\u0027, \u0027parent_id\u0027,"},{"line_number":637,"context_line":"                                 \u0027is_domain\u0027])"},{"line_number":638,"context_line":""},{"line_number":639,"context_line":"    def _assert_v1_tables(self):"},{"line_number":640,"context_line":"        self.assertTableColumns(\u0027project_endpoint\u0027,"},{"line_number":641,"context_line":"                                [\u0027endpoint_id\u0027, \u0027project_id\u0027])"},{"line_number":642,"context_line":"        self.assertTableDoesNotExist(\u0027endpoint_group\u0027)"}],"source_content_type":"text/x-python","patch_set":13,"id":"da20952f_bd38aba1","line":639,"in_reply_to":"fa1b9901_3e32fca7","updated":"2015-08-28 05:49:13.000000000","message":"Done","commit_id":"4a20a54ddef3b2eaa8f9ca4eb1025d91d0eb4c6d"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"13ca2101512d28a59c329db75539ffc199e608c0","unresolved":false,"context_lines":[{"line_number":642,"context_line":"        self.assertTableDoesNotExist(\u0027endpoint_group\u0027)"},{"line_number":643,"context_line":"        self.assertTableDoesNotExist(\u0027project_endpoint_group\u0027)"},{"line_number":644,"context_line":""},{"line_number":645,"context_line":"    def _assert_v2_tables(self):"},{"line_number":646,"context_line":"        self.assertTableColumns(\u0027project_endpoint\u0027,"},{"line_number":647,"context_line":"                                [\u0027endpoint_id\u0027, \u0027project_id\u0027])"},{"line_number":648,"context_line":"        self.assertTableColumns(\u0027endpoint_group\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa1b9901_fe27a460","line":645,"updated":"2015-08-26 12:54:07.000000000","message":"same comment here","commit_id":"4a20a54ddef3b2eaa8f9ca4eb1025d91d0eb4c6d"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"a6b3d444c37dc02ba0bf427539fbbaa77572eb0e","unresolved":false,"context_lines":[{"line_number":642,"context_line":"        self.assertTableDoesNotExist(\u0027endpoint_group\u0027)"},{"line_number":643,"context_line":"        self.assertTableDoesNotExist(\u0027project_endpoint_group\u0027)"},{"line_number":644,"context_line":""},{"line_number":645,"context_line":"    def _assert_v2_tables(self):"},{"line_number":646,"context_line":"        self.assertTableColumns(\u0027project_endpoint\u0027,"},{"line_number":647,"context_line":"                                [\u0027endpoint_id\u0027, \u0027project_id\u0027])"},{"line_number":648,"context_line":"        self.assertTableColumns(\u0027endpoint_group\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"da20952f_dd3b1f9b","line":645,"in_reply_to":"fa1b9901_fe27a460","updated":"2015-08-28 05:49:13.000000000","message":"Done","commit_id":"4a20a54ddef3b2eaa8f9ca4eb1025d91d0eb4c6d"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"9b103e3c342b81402506f6cc935ec522c8efdde0","unresolved":false,"context_lines":[{"line_number":731,"context_line":"        assert_v1_tables()"},{"line_number":732,"context_line":"        self.assertTableColumns(\u0027project_endpoint\u0027,"},{"line_number":733,"context_line":"                                [\u0027endpoint_id\u0027, \u0027project_id\u0027])"},{"line_number":734,"context_line":"        self.upgrade(86)"},{"line_number":735,"context_line":"        assert_v2_tables()"},{"line_number":736,"context_line":""},{"line_number":737,"context_line":"    def populate_user_table(self, with_pass_enab\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":18,"id":"3a29b11f_fe4c2e78","line":734,"updated":"2015-10-18 01:35:28.000000000","message":"this would need to be updated if you squashed the migrations","commit_id":"85b0bc860fad2005bfa4d726e946880922e81d8a"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"9e021f3e5be674315c194f2ff94fa94d18077738","unresolved":false,"context_lines":[{"line_number":731,"context_line":"        assert_v1_tables()"},{"line_number":732,"context_line":"        self.assertTableColumns(\u0027project_endpoint\u0027,"},{"line_number":733,"context_line":"                                [\u0027endpoint_id\u0027, \u0027project_id\u0027])"},{"line_number":734,"context_line":"        self.upgrade(86)"},{"line_number":735,"context_line":"        assert_v2_tables()"},{"line_number":736,"context_line":""},{"line_number":737,"context_line":"    def populate_user_table(self, with_pass_enab\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":18,"id":"3a29b11f_5576543f","line":734,"in_reply_to":"3a29b11f_fe4c2e78","updated":"2015-10-19 03:36:54.000000000","message":"Done","commit_id":"85b0bc860fad2005bfa4d726e946880922e81d8a"}]}
