)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"09df31b05885d5bc07e9fe919173590973d06494","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Ilya Pekelny \u003cipekelny@mirantis.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-02-14 14:53:53 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Synchronize Keystone with oslo migration.py"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Changed imports from keystone.common.sql.migration to"},{"line_number":10,"context_line":"keystone.openstack.common.db.sqlalchemy.migration.py."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":33,"id":"AAAAUX%2F%2FOfY%3D","line":7,"updated":"2014-02-14 18:06:44.000000000","message":"(NIT): Could this be reworded a little bit, to something like;\n\n    \"Refactor migration.py to ...\" \n\nI guess I see \u0027Synchronize\u0027 and \u0027oslo\u0027 in the commit title and I automatically go to \u0027sync code from Oslo\u0027 review mode \u003d) Technically the sync already happened from oslo-incubator.\n\nThis is just a nit for readability/reviewability","commit_id":"ff1f330ee29196f3bac6767fccb7337aca78ce4d"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"613df40b9aeab192ba3c6b0eba5f686df54be301","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Ilya Pekelny \u003cipekelny@mirantis.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-02-14 14:53:53 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Synchronize Keystone with oslo migration.py"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Changed imports from keystone.common.sql.migration to"},{"line_number":10,"context_line":"keystone.openstack.common.db.sqlalchemy.migration.py."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":33,"id":"AAAAUX%2F%2FK4k%3D","line":7,"in_reply_to":"AAAAUX%2F%2FOfY%3D","updated":"2014-02-15 07:30:35.000000000","message":"Yes, you are right. Me to always turning to \u0027sync code from Oslo\u0027 mode, when I see this patch X) I\u0027ll fix it.","commit_id":"ff1f330ee29196f3bac6767fccb7337aca78ce4d"}],"keystone/assignment/backends/sql.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"df0ff0296f7bda3cde327ad76ab302b94d3ef92c","unresolved":false,"context_lines":[{"line_number":1,"context_line":""},{"line_number":2,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"# Copyright 2012-13 OpenStack Foundation"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2F1oU%3D","line":1,"updated":"2014-01-07 21:22:32.000000000","message":"?","commit_id":"4fc926f1b5fa1b116ef964748a39e7f7e3476687"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"998ae76a38220d2a86b2f3d8a1b5079953cdd1a8","unresolved":false,"context_lines":[{"line_number":1,"context_line":""},{"line_number":2,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"# Copyright 2012-13 OpenStack Foundation"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2Fhq0%3D","line":1,"in_reply_to":"AAAAUH%2F%2F1oU%3D","updated":"2014-01-12 16:37:18.000000000","message":"revert whitespace change.","commit_id":"4fc926f1b5fa1b116ef964748a39e7f7e3476687"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"7fd0604bd90577f22ea1059cc795ca886e501c90","unresolved":false,"context_lines":[{"line_number":1,"context_line":""},{"line_number":2,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"# Copyright 2012-13 OpenStack Foundation"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2FZXs%3D","line":1,"in_reply_to":"AAAAUH%2F%2Fhq0%3D","updated":"2014-01-14 09:18:48.000000000","message":"Yep, mistake.","commit_id":"4fc926f1b5fa1b116ef964748a39e7f7e3476687"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"998ae76a38220d2a86b2f3d8a1b5079953cdd1a8","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        abs_path \u003d os.path.abspath("},{"line_number":37,"context_line":"            os.path.join(os.path.dirname(sql.__file__)),"},{"line_number":38,"context_line":"            \u0027migrate_repo\u0027"},{"line_number":39,"context_line":"        )"},{"line_number":40,"context_line":"        migration.db_sync(abs_path\u003dabs_path, version\u003dversion)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def _get_project(self, session, project_id):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2Fhqs%3D","line":39,"updated":"2014-01-12 16:37:18.000000000","message":"seems like we should continue to use find_migrate_repo() from keystone.common.sql.migration since that worked fine for us.","commit_id":"4fc926f1b5fa1b116ef964748a39e7f7e3476687"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"7fd0604bd90577f22ea1059cc795ca886e501c90","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        abs_path \u003d os.path.abspath("},{"line_number":37,"context_line":"            os.path.join(os.path.dirname(sql.__file__)),"},{"line_number":38,"context_line":"            \u0027migrate_repo\u0027"},{"line_number":39,"context_line":"        )"},{"line_number":40,"context_line":"        migration.db_sync(abs_path\u003dabs_path, version\u003dversion)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def _get_project(self, session, project_id):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2FZXk%3D","line":39,"in_reply_to":"AAAAUH%2F%2Fhqs%3D","updated":"2014-01-14 09:18:48.000000000","message":"Ok, I do not like this place too. And I think we need to add required function to Oslo instead of mixing Oslo and native Keystone code.","commit_id":"4fc926f1b5fa1b116ef964748a39e7f7e3476687"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"998ae76a38220d2a86b2f3d8a1b5079953cdd1a8","unresolved":false,"context_lines":[{"line_number":37,"context_line":"            os.path.join(os.path.dirname(sql.__file__)),"},{"line_number":38,"context_line":"            \u0027migrate_repo\u0027"},{"line_number":39,"context_line":"        )"},{"line_number":40,"context_line":"        migration.db_sync(abs_path\u003dabs_path, version\u003dversion)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def _get_project(self, session, project_id):"},{"line_number":43,"context_line":"        project_ref \u003d session.query(Project).get(project_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2Fhqw%3D","line":40,"updated":"2014-01-12 16:37:18.000000000","message":"suggest remove \"abs_path\u003d\" here since it will make it more obvious to reviewers that it\u0027s a required parameter and not something you\u0027re doing to override a default.","commit_id":"4fc926f1b5fa1b116ef964748a39e7f7e3476687"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"7fd0604bd90577f22ea1059cc795ca886e501c90","unresolved":false,"context_lines":[{"line_number":37,"context_line":"            os.path.join(os.path.dirname(sql.__file__)),"},{"line_number":38,"context_line":"            \u0027migrate_repo\u0027"},{"line_number":39,"context_line":"        )"},{"line_number":40,"context_line":"        migration.db_sync(abs_path\u003dabs_path, version\u003dversion)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def _get_project(self, session, project_id):"},{"line_number":43,"context_line":"        project_ref \u003d session.query(Project).get(project_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2FZRY%3D","line":40,"in_reply_to":"AAAAUH%2F%2Fhqw%3D","updated":"2014-01-14 09:18:48.000000000","message":"Done","commit_id":"4fc926f1b5fa1b116ef964748a39e7f7e3476687"}],"keystone/catalog/backends/sql.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"998ae76a38220d2a86b2f3d8a1b5079953cdd1a8","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        abs_path \u003d os.path.abspath("},{"line_number":57,"context_line":"            os.path.join(os.path.dirname(sql.__file__)),"},{"line_number":58,"context_line":"            \u0027migrate_repo\u0027"},{"line_number":59,"context_line":"        )"},{"line_number":60,"context_line":"        migration.db_sync(abs_path\u003dabs_path, version\u003dversion)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    # Services"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2Fhqg%3D","line":59,"updated":"2014-01-12 16:37:18.000000000","message":"same comment here.\n\nMaybe should change keystone.common.sql.migration to call keystone.openstack.common.db.sqlalchemy.migration.db_sync rather than change all these parts.","commit_id":"4fc926f1b5fa1b116ef964748a39e7f7e3476687"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"7fd0604bd90577f22ea1059cc795ca886e501c90","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        abs_path \u003d os.path.abspath("},{"line_number":57,"context_line":"            os.path.join(os.path.dirname(sql.__file__)),"},{"line_number":58,"context_line":"            \u0027migrate_repo\u0027"},{"line_number":59,"context_line":"        )"},{"line_number":60,"context_line":"        migration.db_sync(abs_path\u003dabs_path, version\u003dversion)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    # Services"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2FZW8%3D","line":59,"in_reply_to":"AAAAUH%2F%2Fhqg%3D","updated":"2014-01-14 09:18:48.000000000","message":"Unfortunately Oslo does not have functionality to compute a path. Probably we need to start a new bug or feature in Oslo  to add a path computation functionality.","commit_id":"4fc926f1b5fa1b116ef964748a39e7f7e3476687"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e3e133a2bf1d7335b3f133dc75644801a83dace3","unresolved":false,"context_lines":[{"line_number":14,"context_line":"# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":15,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":16,"context_line":"# under the License."},{"line_number":17,"context_line":"from keystone import catalog"},{"line_number":18,"context_line":"from keystone.catalog import core"},{"line_number":19,"context_line":"from keystone.common import sql"},{"line_number":20,"context_line":"from keystone.common import utils"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2B1ic%3D","line":17,"updated":"2014-01-21 16:05:34.000000000","message":"revert whitespace change on previous line.","commit_id":"22f279ff18dc552db809df08c6c93fd44fbf1fb3"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"68535053939ed98ae114698de74225fd0800829c","unresolved":false,"context_lines":[{"line_number":14,"context_line":"# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":15,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":16,"context_line":"# under the License."},{"line_number":17,"context_line":"from keystone import catalog"},{"line_number":18,"context_line":"from keystone.catalog import core"},{"line_number":19,"context_line":"from keystone.common import sql"},{"line_number":20,"context_line":"from keystone.common import utils"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2Bxyw%3D","line":17,"in_reply_to":"AAAAUH%2F%2B1ic%3D","updated":"2014-01-22 10:19:49.000000000","message":"Done","commit_id":"22f279ff18dc552db809df08c6c93fd44fbf1fb3"}],"keystone/cli.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"998ae76a38220d2a86b2f3d8a1b5079953cdd1a8","unresolved":false,"context_lines":[{"line_number":78,"context_line":"                print(_(\"This extension does not provide migrations.\"))"},{"line_number":79,"context_line":"                exit(0)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        repo_path \u003d os.path.abspath(os.path.join("},{"line_number":82,"context_line":"            os.path.dirname(package.__file__),"},{"line_number":83,"context_line":"            \u0027migrate_repo\u0027)"},{"line_number":84,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2FhqQ%3D","line":81,"updated":"2014-01-12 16:37:18.000000000","message":"change the name to abs_path.","commit_id":"4fc926f1b5fa1b116ef964748a39e7f7e3476687"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"7fd0604bd90577f22ea1059cc795ca886e501c90","unresolved":false,"context_lines":[{"line_number":78,"context_line":"                print(_(\"This extension does not provide migrations.\"))"},{"line_number":79,"context_line":"                exit(0)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        repo_path \u003d os.path.abspath(os.path.join("},{"line_number":82,"context_line":"            os.path.dirname(package.__file__),"},{"line_number":83,"context_line":"            \u0027migrate_repo\u0027)"},{"line_number":84,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2FZGM%3D","line":81,"in_reply_to":"AAAAUH%2F%2FhqQ%3D","updated":"2014-01-14 09:18:48.000000000","message":"Done","commit_id":"4fc926f1b5fa1b116ef964748a39e7f7e3476687"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"998ae76a38220d2a86b2f3d8a1b5079953cdd1a8","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            os.path.dirname(package.__file__),"},{"line_number":83,"context_line":"            \u0027migrate_repo\u0027)"},{"line_number":84,"context_line":"        )"},{"line_number":85,"context_line":"        migration.db_sync(version\u003dversion, abs_path\u003drepo_path)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"class DbVersion(BaseApp):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2FhqU%3D","line":85,"updated":"2014-01-12 16:37:18.000000000","message":"change the order here to match the migration.db_sync order... \n\n migration.db_sync(repo_path, version\u003dversion)","commit_id":"4fc926f1b5fa1b116ef964748a39e7f7e3476687"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"7fd0604bd90577f22ea1059cc795ca886e501c90","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            os.path.dirname(package.__file__),"},{"line_number":83,"context_line":"            \u0027migrate_repo\u0027)"},{"line_number":84,"context_line":"        )"},{"line_number":85,"context_line":"        migration.db_sync(version\u003dversion, abs_path\u003drepo_path)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"class DbVersion(BaseApp):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2FZGI%3D","line":85,"in_reply_to":"AAAAUH%2F%2FhqU%3D","updated":"2014-01-14 09:18:48.000000000","message":"Done","commit_id":"4fc926f1b5fa1b116ef964748a39e7f7e3476687"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"998ae76a38220d2a86b2f3d8a1b5079953cdd1a8","unresolved":false,"context_lines":[{"line_number":108,"context_line":"                package \u003d importutils.import_module(package_name)"},{"line_number":109,"context_line":"                abs_path \u003d os.path.abspath(os.path.join("},{"line_number":110,"context_line":"                    os.path.dirname(package.__file__),"},{"line_number":111,"context_line":"                    \u0027migrate_repo\u0027))"},{"line_number":112,"context_line":"                print(migration.db_version(abs_path\u003dabs_path))"},{"line_number":113,"context_line":"            except ImportError:"},{"line_number":114,"context_line":"                print(_(\"This extension does not provide migrations.\"))"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2FhqM%3D","line":111,"updated":"2014-01-12 16:37:18.000000000","message":"this code is duplicated in too many places. Make a function and call it instead.","commit_id":"4fc926f1b5fa1b116ef964748a39e7f7e3476687"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"998ae76a38220d2a86b2f3d8a1b5079953cdd1a8","unresolved":false,"context_lines":[{"line_number":117,"context_line":"            abs_path \u003d os.path.abspath(os.path.join("},{"line_number":118,"context_line":"                os.path.dirname(sql.__file__),"},{"line_number":119,"context_line":"                \u0027migrate_repo\u0027))"},{"line_number":120,"context_line":"            print(migration.db_version(abs_path))"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"class BaseCertificateSetup(BaseApp):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2FhqA%3D","line":120,"updated":"2014-01-12 16:37:18.000000000","message":"nice! didn\u0027t pass abs_path\u003dabs_path like the other places.","commit_id":"4fc926f1b5fa1b116ef964748a39e7f7e3476687"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e3e133a2bf1d7335b3f133dc75644801a83dace3","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        abs_path \u003d utils.find_path_to_migrate_repo(package)"},{"line_number":82,"context_line":"        migration.db_version_control(abs_path)"},{"line_number":83,"context_line":"        migration.db_sync(abs_path, version\u003dversion)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"class DbVersion(BaseApp):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2B1gw%3D","line":83,"updated":"2014-01-21 16:05:34.000000000","message":"is this changing the behavior where it used to not fail and now it will? I\u0027ll look into this some more.","commit_id":"22f279ff18dc552db809df08c6c93fd44fbf1fb3"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"68535053939ed98ae114698de74225fd0800829c","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        abs_path \u003d utils.find_path_to_migrate_repo(package)"},{"line_number":82,"context_line":"        migration.db_version_control(abs_path)"},{"line_number":83,"context_line":"        migration.db_sync(abs_path, version\u003dversion)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"class DbVersion(BaseApp):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2BxoE%3D","line":83,"in_reply_to":"AAAAUH%2F%2B1Ls%3D","updated":"2014-01-22 10:19:49.000000000","message":"Really I have done wrong logic here. Reverted back with minor changes.","commit_id":"22f279ff18dc552db809df08c6c93fd44fbf1fb3"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"04fa6abb9759a784c2b5264e6c32bf6861643839","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        abs_path \u003d utils.find_path_to_migrate_repo(package)"},{"line_number":82,"context_line":"        migration.db_version_control(abs_path)"},{"line_number":83,"context_line":"        migration.db_sync(abs_path, version\u003dversion)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"class DbVersion(BaseApp):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2B1Ls%3D","line":83,"in_reply_to":"AAAAUH%2F%2B1gw%3D","updated":"2014-01-21 16:38:03.000000000","message":"OK, I tried this.\n\nWithout this change, there\u0027s no output.\n\nWith this change, the output is like:\n\n 2014-01-21 10:35:39.479 5364 WARNING keystone.openstack.common.db.sqlalchemy.session [-] This application has not enabled MySQL traditional mode, which means silent data corruption may occur. Please encourage the application developers to enable this mode.\n 2014-01-21 10:35:39.499 5364 CRITICAL keystone [-]\n\nSo the output has changed, and not for the better. For some reason no message is printed with the error... it just says CRITICAL.","commit_id":"22f279ff18dc552db809df08c6c93fd44fbf1fb3"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e3e133a2bf1d7335b3f133dc75644801a83dace3","unresolved":false,"context_lines":[{"line_number":110,"context_line":"                print(_(\"This extension does not provide migrations.\"))"},{"line_number":111,"context_line":"                exit(1)"},{"line_number":112,"context_line":"        else:"},{"line_number":113,"context_line":"            print(migration.db_version(utils.find_path_to_migrate_repo(sql)))"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"class BaseCertificateSetup(BaseApp):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2B1gE%3D","line":113,"updated":"2014-01-21 16:05:34.000000000","message":"btw - I like the code in DbSync that figured out the package and then migrate.db_version in one place.","commit_id":"22f279ff18dc552db809df08c6c93fd44fbf1fb3"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"68535053939ed98ae114698de74225fd0800829c","unresolved":false,"context_lines":[{"line_number":110,"context_line":"                print(_(\"This extension does not provide migrations.\"))"},{"line_number":111,"context_line":"                exit(1)"},{"line_number":112,"context_line":"        else:"},{"line_number":113,"context_line":"            print(migration.db_version(utils.find_path_to_migrate_repo(sql)))"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"class BaseCertificateSetup(BaseApp):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2BxmU%3D","line":113,"in_reply_to":"AAAAUH%2F%2B1gE%3D","updated":"2014-01-22 10:19:49.000000000","message":"I do not get, what do you want me to do? Please describe to me, what, concretely, are you talking about?","commit_id":"22f279ff18dc552db809df08c6c93fd44fbf1fb3"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"cfe30f3d08de7b81af050eb962f85c52ff9bd3a8","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                print(_(\"This extension does not provide migrations.\"))"},{"line_number":81,"context_line":"                exit(0)"},{"line_number":82,"context_line":"        try:"},{"line_number":83,"context_line":"            # Register the repo with the Versionion control API"},{"line_number":84,"context_line":"            # If it already knows about the repo, it will throw"},{"line_number":85,"context_line":"            # an exception that we can safely ignore."},{"line_number":86,"context_line":"            migration.db_version_control(abs_path, version)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2BwLs%3D","line":83,"updated":"2014-01-22 14:17:02.000000000","message":"version*","commit_id":"9276009ecdb86b60caafbcb6f6f2e903a37137dc"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"6ff9c9f647e007c9b034c252589e12d11dee5808","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import os"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from migrate import exceptions"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from oslo.config import cfg"},{"line_number":24,"context_line":"import pbr.version"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAUH%2F%2BKaE%3D","side":"PARENT","line":22,"updated":"2014-01-29 15:28:52.000000000","message":"Why remove this line?","commit_id":"ddc25d0b6e2fb0db125b2a62ae69fe296049a283"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f80456274de9733176e442a9907e05228280847a","unresolved":false,"context_lines":[{"line_number":78,"context_line":"            try:"},{"line_number":79,"context_line":"                package \u003d importutils.import_module(package_name)"},{"line_number":80,"context_line":"                abs_path \u003d migration_helpers.find_migrate_repo(package)"},{"line_number":81,"context_line":"            except (ImportError, OSError):"},{"line_number":82,"context_line":"                print(_(\"This extension does not provide migrations.\"))"},{"line_number":83,"context_line":"                exit(0)"},{"line_number":84,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAUH%2F9olw%3D","line":81,"updated":"2014-02-05 14:13:10.000000000","message":"document why catching OSError.","commit_id":"431799fbfa36cf1c4711717b329de4403f2f2d9e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f80456274de9733176e442a9907e05228280847a","unresolved":false,"context_lines":[{"line_number":85,"context_line":"                # Register the repo with the version control API"},{"line_number":86,"context_line":"                # If it already knows about the repo, it will throw"},{"line_number":87,"context_line":"                # an exception that we can safely ignore."},{"line_number":88,"context_line":"                migration.db_version_control(abs_path, version)"},{"line_number":89,"context_line":"            except exceptions.DatabaseAlreadyControlledError:"},{"line_number":90,"context_line":"                pass"},{"line_number":91,"context_line":"        migration.db_sync(abs_path, version\u003dversion)"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAUH%2F9oks%3D","line":88,"updated":"2014-02-05 14:13:10.000000000","message":"I\u0027m pretty sure that passing the requested version as the initial version is not going to do what we want it to.","commit_id":"431799fbfa36cf1c4711717b329de4403f2f2d9e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f80456274de9733176e442a9907e05228280847a","unresolved":false,"context_lines":[{"line_number":112,"context_line":"                package_name \u003d \u0027.\u0027.join((contrib.__name__, extension))"},{"line_number":113,"context_line":"                package \u003d importutils.import_module(package_name)"},{"line_number":114,"context_line":"                print(migration.db_version("},{"line_number":115,"context_line":"                    migration_helpers.find_migrate_repo(package)))"},{"line_number":116,"context_line":"            except ImportError:"},{"line_number":117,"context_line":"                print(_(\"This extension does not provide migrations.\"))"},{"line_number":118,"context_line":"                exit(1)"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAUH%2F9okE%3D","line":115,"updated":"2014-02-05 14:13:10.000000000","message":"migration.db_version has 2 required parameters.","commit_id":"431799fbfa36cf1c4711717b329de4403f2f2d9e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f80456274de9733176e442a9907e05228280847a","unresolved":false,"context_lines":[{"line_number":118,"context_line":"                exit(1)"},{"line_number":119,"context_line":"        else:"},{"line_number":120,"context_line":"            print(migration.db_version("},{"line_number":121,"context_line":"                migration_helpers.find_migrate_repo()))"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"class BaseCertificateSetup(BaseApp):"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAUH%2F9oj8%3D","line":121,"updated":"2014-02-05 14:13:10.000000000","message":"migration.db_version has 2 required parameters.","commit_id":"431799fbfa36cf1c4711717b329de4403f2f2d9e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"7c784c3ffd7cb637e6c721cd08d2a576e725902d","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                package \u003d importutils.import_module(package_name)"},{"line_number":81,"context_line":"                abs_path \u003d migration_helpers.find_migrate_repo(package)"},{"line_number":82,"context_line":"            # NOTE(I159): if migration repository path doesn\u0027t exist or isn\u0027t"},{"line_number":83,"context_line":"            # a directory, keystone.exception.Error will be raised by"},{"line_number":84,"context_line":"            # `find_migrate_repo`"},{"line_number":85,"context_line":"            except (ImportError, exception.Error):"},{"line_number":86,"context_line":"                print(_(\"This extension does not provide migrations.\"))"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F9UeU%3D","line":83,"updated":"2014-02-07 19:27:16.000000000","message":"seems like if the migration repository isn\u0027t a directory then that should raise an exception since that would indicate a mistake on the part of the programmer.","commit_id":"30b8c6b1dcbeef346f6752e2c80358cddd07e38d"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"d442734144364908cc5e9b527c9c5b9d2a2a00a1","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                package \u003d importutils.import_module(package_name)"},{"line_number":81,"context_line":"                abs_path \u003d migration_helpers.find_migrate_repo(package)"},{"line_number":82,"context_line":"            # NOTE(I159): if migration repository path doesn\u0027t exist or isn\u0027t"},{"line_number":83,"context_line":"            # a directory, keystone.exception.Error will be raised by"},{"line_number":84,"context_line":"            # `find_migrate_repo`"},{"line_number":85,"context_line":"            except (ImportError, exception.Error):"},{"line_number":86,"context_line":"                print(_(\"This extension does not provide migrations.\"))"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUX%2F%2F9eI%3D","line":83,"in_reply_to":"AAAAUH%2F9UeU%3D","updated":"2014-02-08 10:54:33.000000000","message":"We have the same logic with different behavior regarding the code which had been here previously. Previously here had been direct import of migration repository https://github.com/openstack/keystone/blob/master/keystone/cli.py#L76. Absence of migration repository had been checked by catching of ImportError. Now `package` is an extension package, not a migration repository. So, to keep original logic we need to catch an exception raised by `find_migrate_repo` function, because only here we can find out does migrate repository exist.\n\nYou led me to the right idea! The logic was changed here https://review.openstack.org/#/c/69593/10/keystone/cli.py . And it is wrong now. We need to find out does migrate repository exist, instead of it we inquire does extension package exist. And totally ignore possible absence of migration repository.","commit_id":"30b8c6b1dcbeef346f6752e2c80358cddd07e38d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"7c784c3ffd7cb637e6c721cd08d2a576e725902d","unresolved":false,"context_lines":[{"line_number":117,"context_line":"                package \u003d importutils.import_module(package_name)"},{"line_number":118,"context_line":"                print(migration.db_version("},{"line_number":119,"context_line":"                    migration_helpers.find_migrate_repo(package)), 0)"},{"line_number":120,"context_line":"            except ImportError:"},{"line_number":121,"context_line":"                print(_(\"This extension does not provide migrations.\"))"},{"line_number":122,"context_line":"                exit(1)"},{"line_number":123,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F9Udk%3D","line":120,"updated":"2014-02-07 19:27:16.000000000","message":"at line 85 we check for both ImportError and exception.Error, seems like we should do the same here.","commit_id":"30b8c6b1dcbeef346f6752e2c80358cddd07e38d"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"d442734144364908cc5e9b527c9c5b9d2a2a00a1","unresolved":false,"context_lines":[{"line_number":117,"context_line":"                package \u003d importutils.import_module(package_name)"},{"line_number":118,"context_line":"                print(migration.db_version("},{"line_number":119,"context_line":"                    migration_helpers.find_migrate_repo(package)), 0)"},{"line_number":120,"context_line":"            except ImportError:"},{"line_number":121,"context_line":"                print(_(\"This extension does not provide migrations.\"))"},{"line_number":122,"context_line":"                exit(1)"},{"line_number":123,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUX%2F%2F9dk%3D","line":120,"in_reply_to":"AAAAUH%2F9Udk%3D","updated":"2014-02-08 10:54:33.000000000","message":"Yep.","commit_id":"30b8c6b1dcbeef346f6752e2c80358cddd07e38d"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a6191eaea55d2d3966cda37517069c77c0c0eceb","unresolved":false,"context_lines":[{"line_number":96,"context_line":"                pass"},{"line_number":97,"context_line":"        else:"},{"line_number":98,"context_line":"            abs_path \u003d migration_helpers.find_migrate_repo()"},{"line_number":99,"context_line":"        migration.db_sync(abs_path, version\u003dversion)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"class DbVersion(BaseApp):"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAUX%2F%2F13I%3D","line":99,"updated":"2014-02-10 13:35:51.000000000","message":"is \n    migration.db_sync(abs_path, version\u003dversion)\n\nsuppose to be executed with the else block?\n\n    else:\n        abs_path \u003d migration_helpers.find_migrate_repo()\n        migration.db_sync(abs_path, version\u003dversion)","commit_id":"6852fe06c45694e0a97efc852adf91e2802527a9"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"638d23e038a847ef2ef608e55943136208fdaeba","unresolved":false,"context_lines":[{"line_number":96,"context_line":"                pass"},{"line_number":97,"context_line":"        else:"},{"line_number":98,"context_line":"            abs_path \u003d migration_helpers.find_migrate_repo()"},{"line_number":99,"context_line":"        migration.db_sync(abs_path, version\u003dversion)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"class DbVersion(BaseApp):"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAUX%2F%2F1wM%3D","line":99,"in_reply_to":"AAAAUX%2F%2F13I%3D","updated":"2014-02-10 13:46:28.000000000","message":"No, we have different values for `abs_path` compiled in different `if` `else` blocks and extra `db_version_control` call if extension detected. `db_sync` must be called anyway, difference in the path to migration repository. Please note, `db_sync` have `abs_path` as requires positional argument: https://github.com/openstack/keystone/blob/master/keystone/openstack/common/db/sqlalchemy/migration.py#L175","commit_id":"6852fe06c45694e0a97efc852adf91e2802527a9"}],"keystone/common/utils.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e3e133a2bf1d7335b3f133dc75644801a83dace3","unresolved":false,"context_lines":[{"line_number":517,"context_line":"    set_permissions(path, mode, user, group, log)"},{"line_number":518,"context_line":""},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"def find_path_to_migrate_repo(module, repo_name\u003d\u0027migrate_repo\u0027):"},{"line_number":521,"context_line":"    path \u003d os.path.abspath(os.path.join("},{"line_number":522,"context_line":"        os.path.dirname(module.__file__), repo_name))"},{"line_number":523,"context_line":"    return path if os.path.isdir(path) else None"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2B1Y8%3D","line":520,"updated":"2014-01-21 16:05:34.000000000","message":"suggest do the change to move find_path_to_migrate_repo from keystone/common/sql/migration.py to this file in a separate commit.","commit_id":"22f279ff18dc552db809df08c6c93fd44fbf1fb3"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"68535053939ed98ae114698de74225fd0800829c","unresolved":false,"context_lines":[{"line_number":517,"context_line":"    set_permissions(path, mode, user, group, log)"},{"line_number":518,"context_line":""},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"def find_path_to_migrate_repo(module, repo_name\u003d\u0027migrate_repo\u0027):"},{"line_number":521,"context_line":"    path \u003d os.path.abspath(os.path.join("},{"line_number":522,"context_line":"        os.path.dirname(module.__file__), repo_name))"},{"line_number":523,"context_line":"    return path if os.path.isdir(path) else None"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2Bxiw%3D","line":520,"in_reply_to":"AAAAUH%2F%2B1Y8%3D","updated":"2014-01-22 10:20:17.000000000","message":"Ok. I think it will be difficult to merge, but anyway, you are right.","commit_id":"22f279ff18dc552db809df08c6c93fd44fbf1fb3"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e3e133a2bf1d7335b3f133dc75644801a83dace3","unresolved":false,"context_lines":[{"line_number":520,"context_line":"def find_path_to_migrate_repo(module, repo_name\u003d\u0027migrate_repo\u0027):"},{"line_number":521,"context_line":"    path \u003d os.path.abspath(os.path.join("},{"line_number":522,"context_line":"        os.path.dirname(module.__file__), repo_name))"},{"line_number":523,"context_line":"    return path if os.path.isdir(path) else None"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2B1fc%3D","line":523,"updated":"2014-01-21 16:05:34.000000000","message":"how is it useful to return None? seems like should raise an exception. I\u0027ll look into this some more too.","commit_id":"22f279ff18dc552db809df08c6c93fd44fbf1fb3"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"68535053939ed98ae114698de74225fd0800829c","unresolved":false,"context_lines":[{"line_number":520,"context_line":"def find_path_to_migrate_repo(module, repo_name\u003d\u0027migrate_repo\u0027):"},{"line_number":521,"context_line":"    path \u003d os.path.abspath(os.path.join("},{"line_number":522,"context_line":"        os.path.dirname(module.__file__), repo_name))"},{"line_number":523,"context_line":"    return path if os.path.isdir(path) else None"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2Bxis%3D","line":523,"in_reply_to":"AAAAUH%2F%2B1KQ%3D","updated":"2014-01-22 10:19:49.000000000","message":"Done","commit_id":"22f279ff18dc552db809df08c6c93fd44fbf1fb3"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"4b12898cf67f8f013eafe72536a56bb57d49b967","unresolved":false,"context_lines":[{"line_number":520,"context_line":"def find_path_to_migrate_repo(module, repo_name\u003d\u0027migrate_repo\u0027):"},{"line_number":521,"context_line":"    path \u003d os.path.abspath(os.path.join("},{"line_number":522,"context_line":"        os.path.dirname(module.__file__), repo_name))"},{"line_number":523,"context_line":"    return path if os.path.isdir(path) else None"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2B1KQ%3D","line":523,"in_reply_to":"AAAAUH%2F%2B1fc%3D","updated":"2014-01-21 16:40:34.000000000","message":"I checked and it\u0027s not useful to return None. Change this to raise an exception.","commit_id":"22f279ff18dc552db809df08c6c93fd44fbf1fb3"}],"keystone/contrib/federation/backends/sql.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f80456274de9733176e442a9907e05228280847a","unresolved":false,"context_lines":[{"line_number":91,"context_line":"class Federation(sql.Base, core.Driver):"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def db_sync(self):"},{"line_number":94,"context_line":"        migration.db_sync()"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    # Identity Provider CRUD"},{"line_number":97,"context_line":"    @sql.handle_conflicts(conflict_type\u003d\u0027identity_provider\u0027)"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAUH%2F9og8%3D","line":94,"updated":"2014-02-05 14:13:10.000000000","message":"migration.db_sync has a required parameter -- def db_sync(abs_path, version\u003dNone, init_version\u003d0)","commit_id":"431799fbfa36cf1c4711717b329de4403f2f2d9e"}],"keystone/contrib/oauth1/backends/sql.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f80456274de9733176e442a9907e05228280847a","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"class OAuth1(sql.Base):"},{"line_number":87,"context_line":"    def db_sync(self):"},{"line_number":88,"context_line":"        migration.db_sync(migration_helpers.find_migrate_repo())"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def _get_consumer(self, session, consumer_id):"},{"line_number":91,"context_line":"        consumer_ref \u003d session.query(Consumer).get(consumer_id)"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAUH%2F9og0%3D","line":88,"updated":"2014-02-05 14:13:10.000000000","message":"this is an extension so should be passing in the extension\u0027s repo.","commit_id":"431799fbfa36cf1c4711717b329de4403f2f2d9e"}],"keystone/policy/backends/sql.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e3e133a2bf1d7335b3f133dc75644801a83dace3","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":14,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"# under the License."},{"line_number":16,"context_line":"from keystone.common import sql"},{"line_number":17,"context_line":"from keystone.common import utils"},{"line_number":18,"context_line":"from keystone import exception"},{"line_number":19,"context_line":"from keystone.openstack.common.db.sqlalchemy import migration"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2B1ag%3D","line":16,"updated":"2014-01-21 16:05:34.000000000","message":"revert whitespace change on previous line.","commit_id":"22f279ff18dc552db809df08c6c93fd44fbf1fb3"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"68535053939ed98ae114698de74225fd0800829c","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":14,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"# under the License."},{"line_number":16,"context_line":"from keystone.common import sql"},{"line_number":17,"context_line":"from keystone.common import utils"},{"line_number":18,"context_line":"from keystone import exception"},{"line_number":19,"context_line":"from keystone.openstack.common.db.sqlalchemy import migration"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2BxUE%3D","line":16,"in_reply_to":"AAAAUH%2F%2B1ag%3D","updated":"2014-01-22 10:19:49.000000000","message":"Done","commit_id":"22f279ff18dc552db809df08c6c93fd44fbf1fb3"}],"keystone/tests/core.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e3e133a2bf1d7335b3f133dc75644801a83dace3","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        if os.path.exists(db):"},{"line_number":153,"context_line":"            os.unlink(db)"},{"line_number":154,"context_line":"        if not os.path.exists(pristine):"},{"line_number":155,"context_line":"            migration.db_sync(utils.find_path_to_migrate_repo(sql))"},{"line_number":156,"context_line":"            shutil.copyfile(db, pristine)"},{"line_number":157,"context_line":"        else:"},{"line_number":158,"context_line":"            shutil.copyfile(pristine, db)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2B1aI%3D","line":155,"updated":"2014-01-21 16:05:34.000000000","message":"it seems like we\u0027re almost always passing \"sql\" to utils.find_path_to_migrate_repo. Can we make that the default?","commit_id":"22f279ff18dc552db809df08c6c93fd44fbf1fb3"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"68535053939ed98ae114698de74225fd0800829c","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        if os.path.exists(db):"},{"line_number":153,"context_line":"            os.unlink(db)"},{"line_number":154,"context_line":"        if not os.path.exists(pristine):"},{"line_number":155,"context_line":"            migration.db_sync(utils.find_path_to_migrate_repo(sql))"},{"line_number":156,"context_line":"            shutil.copyfile(db, pristine)"},{"line_number":157,"context_line":"        else:"},{"line_number":158,"context_line":"            shutil.copyfile(pristine, db)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2BxdQ%3D","line":155,"in_reply_to":"AAAAUH%2F%2B1aI%3D","updated":"2014-01-22 10:19:49.000000000","message":"Done","commit_id":"22f279ff18dc552db809df08c6c93fd44fbf1fb3"}],"keystone/tests/test_associate_project_endpoint_extension.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e3e133a2bf1d7335b3f133dc75644801a83dace3","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":14,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"# under the License."},{"line_number":16,"context_line":"import uuid"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from keystone.common import utils"},{"line_number":19,"context_line":"from keystone import contrib"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2B1Z8%3D","line":16,"updated":"2014-01-21 16:05:34.000000000","message":"leave the blank line after the license comment","commit_id":"22f279ff18dc552db809df08c6c93fd44fbf1fb3"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"68535053939ed98ae114698de74225fd0800829c","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":14,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"# under the License."},{"line_number":16,"context_line":"import uuid"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from keystone.common import utils"},{"line_number":19,"context_line":"from keystone import contrib"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2BxUc%3D","line":16,"in_reply_to":"AAAAUH%2F%2B1Z8%3D","updated":"2014-01-22 10:19:49.000000000","message":"Done","commit_id":"22f279ff18dc552db809df08c6c93fd44fbf1fb3"}],"keystone/tests/test_sql_migrate_extensions.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f80456274de9733176e442a9907e05228280847a","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"class SqlUpgradeExampleExtension(test_sql_upgrade.SqlMigrateBase):"},{"line_number":45,"context_line":"    repo_package \u003d example"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def test_upgrade(self):"},{"line_number":48,"context_line":"        self.assertTableDoesNotExist(\u0027example\u0027)"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAUH%2F9ogQ%3D","line":45,"updated":"2014-02-05 14:13:10.000000000","message":"why do we need to make this change?","commit_id":"431799fbfa36cf1c4711717b329de4403f2f2d9e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"7c784c3ffd7cb637e6c721cd08d2a576e725902d","unresolved":false,"context_lines":[{"line_number":141,"context_line":"    \"\"\"Test class for ensuring the Federation SQL.\"\"\""},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    def repo_package(self):"},{"line_number":144,"context_line":"        return federation"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":147,"context_line":"        super(FederationExtension, self).__init__(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F9Uck%3D","line":144,"updated":"2014-02-07 19:27:16.000000000","message":"no need for this change it\u0027s just moving things around.","commit_id":"30b8c6b1dcbeef346f6752e2c80358cddd07e38d"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"d442734144364908cc5e9b527c9c5b9d2a2a00a1","unresolved":false,"context_lines":[{"line_number":141,"context_line":"    \"\"\"Test class for ensuring the Federation SQL.\"\"\""},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    def repo_package(self):"},{"line_number":144,"context_line":"        return federation"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":147,"context_line":"        super(FederationExtension, self).__init__(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUX%2F%2F9dU%3D","line":144,"in_reply_to":"AAAAUH%2F9Uck%3D","updated":"2014-02-08 10:54:33.000000000","message":"Missed it out.","commit_id":"30b8c6b1dcbeef346f6752e2c80358cddd07e38d"}],"keystone/tests/test_sql_upgrade.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"df0ff0296f7bda3cde327ad76ab302b94d3ef92c","unresolved":false,"context_lines":[{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    def test_start_version_0(self):"},{"line_number":166,"context_line":"        version \u003d migration.db_version(self.repo_path, 0)"},{"line_number":167,"context_line":"        self.assertEqual(version, 0, \"DB is not at version 0\")"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    def test_two_steps_forward_one_step_back(self):"},{"line_number":170,"context_line":"        \"\"\"You should be able to cleanly undo and re-apply all upgrades."}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2F1nY%3D","line":167,"updated":"2014-01-07 21:22:32.000000000","message":"lol nice catch","commit_id":"4fc926f1b5fa1b116ef964748a39e7f7e3476687"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"7c784c3ffd7cb637e6c721cd08d2a576e725902d","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                         tests.dirs.tests(\u0027backend_sql.conf\u0027)]"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def repo_package(self):"},{"line_number":67,"context_line":"        return sql"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    #override this to specify the complete list of configuration files"},{"line_number":70,"context_line":"    def config_files(self):"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F9Ucg%3D","line":67,"updated":"2014-02-07 19:27:16.000000000","message":"no need for this change it\u0027s just moving code around.","commit_id":"30b8c6b1dcbeef346f6752e2c80358cddd07e38d"}],"keystone/tests/test_v3_oauth1.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"6ff9c9f647e007c9b034c252589e12d11dee5808","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def setup_database(self):"},{"line_number":41,"context_line":"        super(OAuth1Tests, self).setup_database()"},{"line_number":42,"context_line":"        package_name \u003d \".\".join((contrib.__name__, self.EXTENSION_NAME))"},{"line_number":43,"context_line":"        package \u003d importutils.import_module(package_name)"},{"line_number":44,"context_line":"        abs_path \u003d utils.find_migrate_repo(package)"},{"line_number":45,"context_line":"        migration.db_version_control(abs_path)"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAUH%2F%2BKXk%3D","line":42,"updated":"2014-01-29 15:28:52.000000000","message":"Just curious, how come this was switched from single quotes to double?","commit_id":"c0ecec874d077e77b1e66dbb48abf4296b127de0"}]}
