)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"44feb5a464f0a905d77240af30e4e2ea13e022e7","unresolved":false,"context_lines":[{"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":"Change-Id: Id1cd0143951a8086803fe739ea5f143adb1ee6ba"},{"line_number":14,"context_line":"Implements: bp replace_extensions"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"3acd31a7_5c050a78","line":14,"updated":"2015-05-01 13:13:50.000000000","message":"broken link to the blueprint?","commit_id":"3cd88f14caaf60d6f3586e10302fcbbdbce3f6b0"}],"keystone/common/sql/migrate_repo/versions/073_add_endpoint_policy_table.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"44feb5a464f0a905d77240af30e4e2ea13e022e7","unresolved":false,"context_lines":[{"line_number":22,"context_line":"        extension_version \u003d migration_helpers.get_db_version("},{"line_number":23,"context_line":"            extension\u003d\u0027endpoint_policy\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_policy extension migration 1. Only"}],"source_content_type":"text/x-python","patch_set":6,"id":"3acd31a7_5c13cab8","line":25,"updated":"2015-05-01 13:13:50.000000000","message":"Should this be accepting any Exception or should we be looking for something in particular?","commit_id":"3cd88f14caaf60d6f3586e10302fcbbdbce3f6b0"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"44feb5a464f0a905d77240af30e4e2ea13e022e7","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    # This extension corresponds to endpoint_policy extension migration 1. Only"},{"line_number":29,"context_line":"    # update if it has not been run."},{"line_number":30,"context_line":"    if extension_version \u003e\u003d 1:"},{"line_number":31,"context_line":"        return"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    # Upgrade operations go here. Don\u0027t create your own engine; bind"},{"line_number":34,"context_line":"    # migrate_engine to your metadata"}],"source_content_type":"text/x-python","patch_set":6,"id":"3acd31a7_1c0d5290","line":31,"updated":"2015-05-01 13:13:50.000000000","message":"Is there a way to check the schema of a particular table? Maybe an alternative to this would be to ensure the schema of the endpoint_policy table matches what we need it to and use that to determine if we need to run the migration or not.","commit_id":"3cd88f14caaf60d6f3586e10302fcbbdbce3f6b0"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"4ddfc8761708d46c4c450ba237f09cf6dd98d6e1","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2014 IBM Corp."},{"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":13,"id":"1a4dcd0f_3787add8","line":1,"updated":"2015-08-05 13:16:51.000000000","message":"copyright needed?","commit_id":"382207b1bcda8eb8d921e10874689642d349f902"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"de2e7c27080b4072d5b3df437278e487e5c0fe1d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2014 IBM Corp."},{"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":13,"id":"7a2fa921_c2c60816","line":1,"in_reply_to":"1a4dcd0f_3787add8","updated":"2015-10-13 05:36:54.000000000","message":"i think so, it\u0027s on the original, if it was a clean rename it would be maintained, but since it\u0027s a copy (we keep the original for deprecation reasons), we should include it just the same","commit_id":"382207b1bcda8eb8d921e10874689642d349f902"}],"keystone/common/sql/migrate_repo/versions/081_add_endpoint_policy_table.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3b40b2dced0033b9b3a5376cb5c0e8460734c280","unresolved":false,"context_lines":[{"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_policy extension migration 1. Only"},{"line_number":29,"context_line":"    # update if it has not been run."},{"line_number":30,"context_line":"    if extension_version \u003e\u003d 1:"},{"line_number":31,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a2ca52d_909e92b7","line":28,"updated":"2015-10-16 18:37:38.000000000","message":"change first \"extension\" to \"migration\"","commit_id":"aa5c4f08daba665e028ad2c714e5ba11cdfaef9f"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f4c101396fb07237ec7ee16d6fd41fba0dd90ea0","unresolved":false,"context_lines":[{"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_policy extension migration 1. Only"},{"line_number":29,"context_line":"    # update if it has not been run."},{"line_number":30,"context_line":"    if extension_version \u003e\u003d 1:"},{"line_number":31,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a2ca52d_dc9e6162","line":28,"in_reply_to":"5a2ca52d_909e92b7","updated":"2015-10-16 21:31:41.000000000","message":"Done","commit_id":"aa5c4f08daba665e028ad2c714e5ba11cdfaef9f"}],"keystone/common/sql/migration_helpers.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"44feb5a464f0a905d77240af30e4e2ea13e022e7","unresolved":false,"context_lines":[{"line_number":192,"context_line":""},{"line_number":193,"context_line":"def _sync_extension_repo(extension, version):"},{"line_number":194,"context_line":"    if extension in MIGRATED_EXTENSIONS:"},{"line_number":195,"context_line":"        raise RuntimeError(_(\"The %s extension has been moved into the \""},{"line_number":196,"context_line":"                             \"keystone core and such it\u0027s migrations are \""},{"line_number":197,"context_line":"                             \"maintained by the main keystone database \""},{"line_number":198,"context_line":"                             \"control.\"))"}],"source_content_type":"text/x-python","patch_set":6,"id":"3acd31a7_dc27da10","line":195,"updated":"2015-05-01 13:13:50.000000000","message":"s/the//","commit_id":"3cd88f14caaf60d6f3586e10302fcbbdbce3f6b0"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"44feb5a464f0a905d77240af30e4e2ea13e022e7","unresolved":false,"context_lines":[{"line_number":193,"context_line":"def _sync_extension_repo(extension, version):"},{"line_number":194,"context_line":"    if extension in MIGRATED_EXTENSIONS:"},{"line_number":195,"context_line":"        raise RuntimeError(_(\"The %s extension has been moved into the \""},{"line_number":196,"context_line":"                             \"keystone core and such it\u0027s migrations are \""},{"line_number":197,"context_line":"                             \"maintained by the main keystone database \""},{"line_number":198,"context_line":"                             \"control.\"))"},{"line_number":199,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3acd31a7_bc22deff","line":196,"updated":"2015-05-01 13:13:50.000000000","message":"Keystone*","commit_id":"3cd88f14caaf60d6f3586e10302fcbbdbce3f6b0"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"44feb5a464f0a905d77240af30e4e2ea13e022e7","unresolved":false,"context_lines":[{"line_number":195,"context_line":"        raise RuntimeError(_(\"The %s extension has been moved into the \""},{"line_number":196,"context_line":"                             \"keystone core and such it\u0027s migrations are \""},{"line_number":197,"context_line":"                             \"maintained by the main keystone database \""},{"line_number":198,"context_line":"                             \"control.\"))"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"    init_version \u003d 0"},{"line_number":201,"context_line":"    engine \u003d sql.get_engine()"}],"source_content_type":"text/x-python","patch_set":6,"id":"3acd31a7_9c2162fe","line":198,"updated":"2015-05-01 13:13:50.000000000","message":"Keystone* \n\nmaybe make this message point to where the database control is.","commit_id":"3cd88f14caaf60d6f3586e10302fcbbdbce3f6b0"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3b40b2dced0033b9b3a5376cb5c0e8460734c280","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":18,"id":"5a2ca52d_507b1a7b","line":144,"updated":"2015-10-16 18:37:38.000000000","message":"space missing at end of line.","commit_id":"aa5c4f08daba665e028ad2c714e5ba11cdfaef9f"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f4c101396fb07237ec7ee16d6fd41fba0dd90ea0","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":18,"id":"5a2ca52d_1ca7f9aa","line":144,"in_reply_to":"5a2ca52d_507b1a7b","updated":"2015-10-16 21:31:41.000000000","message":"Done","commit_id":"aa5c4f08daba665e028ad2c714e5ba11cdfaef9f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3b40b2dced0033b9b3a5376cb5c0e8460734c280","unresolved":false,"context_lines":[{"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":""},{"line_number":148,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"5a2ca52d_f08a6663","line":145,"updated":"2015-10-16 18:37:38.000000000","message":"change \"and such\" to \", as such\"\n\nchange \"it\u0027s\" to \"its\"","commit_id":"aa5c4f08daba665e028ad2c714e5ba11cdfaef9f"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f4c101396fb07237ec7ee16d6fd41fba0dd90ea0","unresolved":false,"context_lines":[{"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":""},{"line_number":148,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"5a2ca52d_7c9b8d66","line":145,"in_reply_to":"5a2ca52d_f08a6663","updated":"2015-10-16 21:31:41.000000000","message":"Done","commit_id":"aa5c4f08daba665e028ad2c714e5ba11cdfaef9f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3b40b2dced0033b9b3a5376cb5c0e8460734c280","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":18,"id":"5a2ca52d_f0e1062b","line":146,"updated":"2015-10-16 18:37:38.000000000","message":"suggest make the operator response clear -- as in, use keystone-manage db_sync.","commit_id":"aa5c4f08daba665e028ad2c714e5ba11cdfaef9f"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f4c101396fb07237ec7ee16d6fd41fba0dd90ea0","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":18,"id":"5a2ca52d_5c98116a","line":146,"in_reply_to":"5a2ca52d_f0e1062b","updated":"2015-10-16 21:31:41.000000000","message":"Done","commit_id":"aa5c4f08daba665e028ad2c714e5ba11cdfaef9f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3b40b2dced0033b9b3a5376cb5c0e8460734c280","unresolved":false,"context_lines":[{"line_number":169,"context_line":""},{"line_number":170,"context_line":"def _sync_extension_repo(extension, version):"},{"line_number":171,"context_line":"    if extension in MIGRATED_EXTENSIONS:"},{"line_number":172,"context_line":"        migration_moved_failure(extension)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    init_version \u003d 0"},{"line_number":175,"context_line":"    engine \u003d sql.get_engine()"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a2ca52d_5040fa06","line":172,"updated":"2015-10-16 18:37:38.000000000","message":"create an exception MigrationMovedFailure and raise that rather than call a function to raise an exception.","commit_id":"aa5c4f08daba665e028ad2c714e5ba11cdfaef9f"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f4c101396fb07237ec7ee16d6fd41fba0dd90ea0","unresolved":false,"context_lines":[{"line_number":169,"context_line":""},{"line_number":170,"context_line":"def _sync_extension_repo(extension, version):"},{"line_number":171,"context_line":"    if extension in MIGRATED_EXTENSIONS:"},{"line_number":172,"context_line":"        migration_moved_failure(extension)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    init_version \u003d 0"},{"line_number":175,"context_line":"    engine \u003d sql.get_engine()"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a2ca52d_dcac218e","line":172,"in_reply_to":"5a2ca52d_5040fa06","updated":"2015-10-16 21:31:41.000000000","message":"Done","commit_id":"aa5c4f08daba665e028ad2c714e5ba11cdfaef9f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3b40b2dced0033b9b3a5376cb5c0e8460734c280","unresolved":false,"context_lines":[{"line_number":226,"context_line":"        raise ImportError(_(\"%s extension does not exist.\")"},{"line_number":227,"context_line":"                          % package_name)"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    return migration.db_version(engine, find_migrate_repo(package), 0)"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"def print_db_version(extension\u003dNone):"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a2ca52d_705ad6f3","line":229,"updated":"2015-10-16 18:37:38.000000000","message":"this change is unrelated.","commit_id":"aa5c4f08daba665e028ad2c714e5ba11cdfaef9f"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f4c101396fb07237ec7ee16d6fd41fba0dd90ea0","unresolved":false,"context_lines":[{"line_number":226,"context_line":"        raise ImportError(_(\"%s extension does not exist.\")"},{"line_number":227,"context_line":"                          % package_name)"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    return migration.db_version(engine, find_migrate_repo(package), 0)"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"def print_db_version(extension\u003dNone):"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a2ca52d_bcf4c55a","line":229,"in_reply_to":"5a2ca52d_705ad6f3","updated":"2015-10-16 21:31:41.000000000","message":"undid this change","commit_id":"aa5c4f08daba665e028ad2c714e5ba11cdfaef9f"}],"keystone/contrib/endpoint_policy/migrate_repo/versions/001_add_endpoint_policy_table.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"44feb5a464f0a905d77240af30e4e2ea13e022e7","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"raise RuntimeError(\u0027This migration has been moved under the control of \u0027"},{"line_number":17,"context_line":"                   \u0027the core keystone migrations scripts. Please execute \u0027"},{"line_number":18,"context_line":"                   \u0027from there.\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3acd31a7_5c7aaaf2","line":18,"updated":"2015-05-01 13:13:50.000000000","message":"same comments here as in the previous module.","commit_id":"3cd88f14caaf60d6f3586e10302fcbbdbce3f6b0"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"508c83de70bdf5bf8b43b594eaa8f7854b1c1639","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"raise RuntimeError(\u0027This migration has been moved under the control of core \u0027"},{"line_number":17,"context_line":"                   \u0027Keystone migrations scripts. Please execute from there.\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_3fadad88","line":17,"updated":"2015-05-27 15:57:12.000000000","message":"This is the same error as the one in migration_helpers.py\n\nMaybe we could have a common error and use it in both places (since we will be migrating other extensions as well, and it could probably be used there).","commit_id":"0e91579601ed4a1cfb5123131197a3b8d4c72724"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"09274b889d8fd40222fa074a5111405a50208436","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from keystone.common.sql import migration_helpers"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"migration_helpers.migration_moved_failure(\u0027endpoint_policy\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a016987_e09e2953","line":18,"updated":"2015-05-28 14:28:04.000000000","message":"This statement will be executed directly, and thus, `gate-keystone-docs` will failed at this point, suggest to run this statement conditionally. Do it when upgrade is invoked?","commit_id":"17a4a0b14e94e9d6f925fa0319e84809b2c1915f"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"426a0e799a75aa94c5a29f0d55e062e5669f82f3","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from keystone.common.sql import migration_helpers"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"migration_helpers.migration_moved_failure(\u0027endpoint_policy\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a016987_643c6dc8","line":18,"in_reply_to":"7a016987_e09e2953","updated":"2015-05-29 07:23:40.000000000","message":"hmm, i did this on purpose and it\u0027s the same in the previous version which worked. I wonder why it broke this time.","commit_id":"17a4a0b14e94e9d6f925fa0319e84809b2c1915f"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"ca118e5ce73ddb09d61ee4b2276a4200adeeb842","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"def upgrade(migrate_engine):"},{"line_number":19,"context_line":"    migration_helpers.migration_moved_failure(\u0027endpoint_policy\u0027)"}],"source_content_type":"text/x-python","patch_set":13,"id":"5afe65bd_1e8a1dc0","line":19,"updated":"2015-06-02 13:29:16.000000000","message":"Why not just delete this migration?","commit_id":"382207b1bcda8eb8d921e10874689642d349f902"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"4ddfc8761708d46c4c450ba237f09cf6dd98d6e1","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"def upgrade(migrate_engine):"},{"line_number":19,"context_line":"    migration_helpers.migration_moved_failure(\u0027endpoint_policy\u0027)"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a4dcd0f_b7a65d51","line":19,"in_reply_to":"5afe65bd_1e8a1dc0","updated":"2015-08-05 13:16:51.000000000","message":"if we did that, would we need the RuntimeError in the migration_helper.py?","commit_id":"382207b1bcda8eb8d921e10874689642d349f902"}],"keystone/exception.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"69f6b6eec9c973aa235068387c494df17aec5396","unresolved":false,"context_lines":[{"line_number":500,"context_line":"        self.extension \u003d extension"},{"line_number":501,"context_line":""},{"line_number":502,"context_line":"    def __str__(self):"},{"line_number":503,"context_line":"        msg \u003d _(\"The %s extension has been moved into Keystone core and as \""},{"line_number":504,"context_line":"                \"such its migrations are maintained by the main Keystone \""},{"line_number":505,"context_line":"                \"database control. Use the command: use keystone-manage \""},{"line_number":506,"context_line":"                \"db_sync\") % self.extension"}],"source_content_type":"text/x-python","patch_set":19,"id":"3a29b11f_0d3cf02d","line":503,"updated":"2015-10-20 20:15:01.000000000","message":"lowercase keystone to match the openstack style guide. Also, see next line too.","commit_id":"bed1ecc13c3b287b249e19abda38ca45412f4b35"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"af16c43321e18e930c03ba873f3d5c01c385954e","unresolved":false,"context_lines":[{"line_number":502,"context_line":"    def __str__(self):"},{"line_number":503,"context_line":"        msg \u003d _(\"The %s extension has been moved into Keystone core and as \""},{"line_number":504,"context_line":"                \"such its migrations are maintained by the main Keystone \""},{"line_number":505,"context_line":"                \"database control. Use the command: use keystone-manage \""},{"line_number":506,"context_line":"                \"db_sync\") % self.extension"},{"line_number":507,"context_line":"        return msg"}],"source_content_type":"text/x-python","patch_set":19,"id":"3a29b11f_a847184a","line":505,"updated":"2015-10-20 02:17:46.000000000","message":"the second \u0027use\u0027 here is redundant","commit_id":"bed1ecc13c3b287b249e19abda38ca45412f4b35"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6649c0f0483b7ea29a3e7befecefc8f1a4231543","unresolved":false,"context_lines":[{"line_number":495,"context_line":""},{"line_number":496,"context_line":"class MigrationMovedFailure(RuntimeError):"},{"line_number":497,"context_line":"    def __init__(self, extension):"},{"line_number":498,"context_line":"        self.extension \u003d extension"},{"line_number":499,"context_line":""},{"line_number":500,"context_line":"    def __str__(self):"},{"line_number":501,"context_line":"        msg \u003d _(\"The %s extension has been moved into keystone core and as \""}],"source_content_type":"text/x-python","patch_set":22,"id":"1a26ad4f_24b7c0d9","line":498,"updated":"2015-10-29 05:26:37.000000000","message":"this should call the super __init__ with the new message rather than overriding __str__ like we do in Error.","commit_id":"c5bc05de91c4bd2172a0795c8b8f7ef3d51e0e66"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"129962b54ebad27403fa06398f87515003400a6c","unresolved":false,"context_lines":[{"line_number":495,"context_line":""},{"line_number":496,"context_line":"class MigrationMovedFailure(RuntimeError):"},{"line_number":497,"context_line":"    def __init__(self, extension):"},{"line_number":498,"context_line":"        self.extension \u003d extension"},{"line_number":499,"context_line":""},{"line_number":500,"context_line":"    def __str__(self):"},{"line_number":501,"context_line":"        msg \u003d _(\"The %s extension has been moved into keystone core and as \""}],"source_content_type":"text/x-python","patch_set":22,"id":"1a26ad4f_4f2a1580","line":498,"in_reply_to":"1a26ad4f_24b7c0d9","updated":"2015-10-29 05:33:40.000000000","message":"Done","commit_id":"c5bc05de91c4bd2172a0795c8b8f7ef3d51e0e66"}],"keystone/tests/unit/test_sql_migrate_extensions.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"44feb5a464f0a905d77240af30e4e2ea13e022e7","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        self.upgrade(1, repository\u003dself.repo_path)"},{"line_number":169,"context_line":"        self.assertTableColumns(\u0027policy_association\u0027,"},{"line_number":170,"context_line":"                                [\u0027id\u0027, \u0027policy_id\u0027, \u0027endpoint_id\u0027,"},{"line_number":171,"context_line":"                                 \u0027service_id\u0027, \u0027region_id\u0027])"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"class FederationExtension(test_sql_upgrade.SqlMigrateBase):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3acd31a7_bc69be27","side":"PARENT","line":171,"updated":"2015-05-01 13:13:50.000000000","message":"Shouldn\u0027t this get moved to https://github.com/openstack/keystone/blob/master/keystone/tests/unit/test_sql_upgrade.py","commit_id":"f106e97e58e763c4a29829533e48e18611a60f77"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3b40b2dced0033b9b3a5376cb5c0e8460734c280","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        self._assert_v2_tables()"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"class EndpointPolicyExtension(test_sql_upgrade.SqlMigrateBase):"},{"line_number":163,"context_line":"    def repo_package(self):"},{"line_number":164,"context_line":"        return endpoint_policy"},{"line_number":165,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"5a2ca52d_b032aea5","side":"PARENT","line":162,"updated":"2015-10-16 18:37:38.000000000","message":"the test should stay here, just check that it raises.","commit_id":"9c4ca9a5aa0c3ba120647cfbe0619a313b114577"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f4c101396fb07237ec7ee16d6fd41fba0dd90ea0","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        self._assert_v2_tables()"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"class EndpointPolicyExtension(test_sql_upgrade.SqlMigrateBase):"},{"line_number":163,"context_line":"    def repo_package(self):"},{"line_number":164,"context_line":"        return endpoint_policy"},{"line_number":165,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"5a2ca52d_072a4290","side":"PARENT","line":162,"in_reply_to":"5a2ca52d_b032aea5","updated":"2015-10-16 21:31:41.000000000","message":"Done","commit_id":"9c4ca9a5aa0c3ba120647cfbe0619a313b114577"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"69f6b6eec9c973aa235068387c494df17aec5396","unresolved":false,"context_lines":[{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def test_upgrade(self):"},{"line_number":168,"context_line":"        self.assertRaises(exception.MigrationMovedFailure,"},{"line_number":169,"context_line":"                          self.upgrade, 1,"},{"line_number":170,"context_line":"                          repository\u003dself.repo_path)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"3a29b11f_6d7a44f3","line":169,"updated":"2015-10-20 20:15:01.000000000","message":"the \"1\" magic number should be given a name. (I assume it\u0027s the version.)","commit_id":"bed1ecc13c3b287b249e19abda38ca45412f4b35"}],"keystone/tests/unit/test_sql_upgrade.py":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"bb36be890e51f37026b53ecfd1a85b44c3e76308","unresolved":false,"context_lines":[{"line_number":467,"context_line":"        self.assertTableColumns(sensitive_table,"},{"line_number":468,"context_line":"                                [\u0027domain_id\u0027, \u0027group\u0027, \u0027option\u0027, \u0027value\u0027])"},{"line_number":469,"context_line":""},{"line_number":470,"context_line":"    def test_upgrade(self):"},{"line_number":471,"context_line":"        self.assertTableDoesNotExist(\u0027policy_association\u0027)"},{"line_number":472,"context_line":"        self.upgrade(73)"},{"line_number":473,"context_line":"        self.assertTableColumns(\u0027policy_association\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a016987_9452d765","line":470,"updated":"2015-05-30 12:08:51.000000000","message":"\u0027test_upgrade\u0027 is too general, replace it with `test_endpoint_policy_upgrade`?","commit_id":"17a4a0b14e94e9d6f925fa0319e84809b2c1915f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3b40b2dced0033b9b3a5376cb5c0e8460734c280","unresolved":false,"context_lines":[{"line_number":549,"context_line":"        self.assertTableColumns(\u0027policy_association\u0027,"},{"line_number":550,"context_line":"                                [\u0027id\u0027, \u0027policy_id\u0027, \u0027endpoint_id\u0027,"},{"line_number":551,"context_line":"                                 \u0027service_id\u0027, \u0027region_id\u0027])"},{"line_number":552,"context_line":""},{"line_number":553,"context_line":"    def test_fixup_service_name_value_upgrade(self):"},{"line_number":554,"context_line":"        \"\"\"Update service name data from `extra` to empty string.\"\"\""},{"line_number":555,"context_line":"        def add_service(**extra_data):"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a2ca52d_d0196a23","line":552,"updated":"2015-10-16 18:37:38.000000000","message":"there should also be a test for the case when the original migrations were run so the table does exist.","commit_id":"aa5c4f08daba665e028ad2c714e5ba11cdfaef9f"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f4c101396fb07237ec7ee16d6fd41fba0dd90ea0","unresolved":false,"context_lines":[{"line_number":549,"context_line":"        self.assertTableColumns(\u0027policy_association\u0027,"},{"line_number":550,"context_line":"                                [\u0027id\u0027, \u0027policy_id\u0027, \u0027endpoint_id\u0027,"},{"line_number":551,"context_line":"                                 \u0027service_id\u0027, \u0027region_id\u0027])"},{"line_number":552,"context_line":""},{"line_number":553,"context_line":"    def test_fixup_service_name_value_upgrade(self):"},{"line_number":554,"context_line":"        \"\"\"Update service name data from `extra` to empty string.\"\"\""},{"line_number":555,"context_line":"        def add_service(**extra_data):"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a2ca52d_6211a45c","line":552,"in_reply_to":"5a2ca52d_d0196a23","updated":"2015-10-16 21:31:41.000000000","message":"i\u0027m not sure how to easily test this since we are removing the functionality that would setup the previous migration","commit_id":"aa5c4f08daba665e028ad2c714e5ba11cdfaef9f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"69f6b6eec9c973aa235068387c494df17aec5396","unresolved":false,"context_lines":[{"line_number":549,"context_line":"        self.assertTableColumns(\u0027policy_association\u0027,"},{"line_number":550,"context_line":"                                [\u0027id\u0027, \u0027policy_id\u0027, \u0027endpoint_id\u0027,"},{"line_number":551,"context_line":"                                 \u0027service_id\u0027, \u0027region_id\u0027])"},{"line_number":552,"context_line":""},{"line_number":553,"context_line":"    def test_fixup_service_name_value_upgrade(self):"},{"line_number":554,"context_line":"        \"\"\"Update service name data from `extra` to empty string.\"\"\""},{"line_number":555,"context_line":"        def add_service(**extra_data):"}],"source_content_type":"text/x-python","patch_set":19,"id":"3a29b11f_0d6ab01a","line":552,"updated":"2015-10-20 20:15:01.000000000","message":"there should also be a test for the case when the original migrations were run so the table does exist.\n\nIt doesn\u0027t matter whether it\u0027s easy or not. We could leave the old code there so that the extension migration could be run, just set a global variable or mock to enable it.","commit_id":"bed1ecc13c3b287b249e19abda38ca45412f4b35"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6649c0f0483b7ea29a3e7befecefc8f1a4231543","unresolved":false,"context_lines":[{"line_number":555,"context_line":""},{"line_number":556,"context_line":"        # By setting the return value to 1, the migration has already been"},{"line_number":557,"context_line":"        # run, and there\u0027s no need to create the table again"},{"line_number":558,"context_line":"        with mock.patch.object(migration_helpers, \u0027get_db_version\u0027,"},{"line_number":559,"context_line":"                               return_value\u003d1) as mock_ep:"},{"line_number":560,"context_line":"            self.upgrade(81)"},{"line_number":561,"context_line":"            # It won\u0027t exist because we are mocking it, but we can verify"}],"source_content_type":"text/x-python","patch_set":22,"id":"1a26ad4f_c4fe0c38","line":558,"updated":"2015-10-29 05:26:37.000000000","message":"it would be cleaner to make this a decorator.","commit_id":"c5bc05de91c4bd2172a0795c8b8f7ef3d51e0e66"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"129962b54ebad27403fa06398f87515003400a6c","unresolved":false,"context_lines":[{"line_number":555,"context_line":""},{"line_number":556,"context_line":"        # By setting the return value to 1, the migration has already been"},{"line_number":557,"context_line":"        # run, and there\u0027s no need to create the table again"},{"line_number":558,"context_line":"        with mock.patch.object(migration_helpers, \u0027get_db_version\u0027,"},{"line_number":559,"context_line":"                               return_value\u003d1) as mock_ep:"},{"line_number":560,"context_line":"            self.upgrade(81)"},{"line_number":561,"context_line":"            # It won\u0027t exist because we are mocking it, but we can verify"}],"source_content_type":"text/x-python","patch_set":22,"id":"1a26ad4f_4f78d58f","line":558,"in_reply_to":"1a26ad4f_c4fe0c38","updated":"2015-10-29 05:33:40.000000000","message":"Done","commit_id":"c5bc05de91c4bd2172a0795c8b8f7ef3d51e0e66"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"418c41741dac3103091fe69749c91592dc9fb900","unresolved":false,"context_lines":[{"line_number":560,"context_line":"            self.upgrade(81)"},{"line_number":561,"context_line":"            # It won\u0027t exist because we are mocking it, but we can verify"},{"line_number":562,"context_line":"            # that 081 did not create the table"},{"line_number":563,"context_line":"            self.assertTableDoesNotExist(\u0027policy_association\u0027)"},{"line_number":564,"context_line":""},{"line_number":565,"context_line":"        mock_ep.assert_called_once_with(extension\u003d\u0027endpoint_policy\u0027,"},{"line_number":566,"context_line":"                                        engine\u003dmock.ANY)"}],"source_content_type":"text/x-python","patch_set":22,"id":"1a26ad4f_212c9201","line":563,"updated":"2015-10-29 04:56:33.000000000","message":"This might be the best we can do to test the migration scripts!","commit_id":"c5bc05de91c4bd2172a0795c8b8f7ef3d51e0e66"}]}
