)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"59ef49e235237c07090b1d85b9466bf7096ea845","unresolved":false,"context_lines":[{"line_number":7,"context_line":"drop user and group constraints"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Drop  foreign keys that point to user and group tables from"},{"line_number":10,"context_line":"other tablesi.  This is required to be able to split up the backends."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Refactored the code to create a helper file for migrations."},{"line_number":13,"context_line":"The code to get a foreign key constraint is more specific"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAPH%2F%2FbwI%3D","line":10,"updated":"2013-06-04 02:02:34.000000000","message":"Minor spelling error? Is this suppose to be \u0027tables\u0027?","commit_id":"436fde569b379536715ccda77c388049149a1b3c"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"7058881dd9010ba16e9ef332b1731f3cd4ba3082","unresolved":false,"context_lines":[{"line_number":7,"context_line":"drop user and group constraints"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Drop  foreign keys that point to user and group tables from"},{"line_number":10,"context_line":"other tablesi.  This is required to be able to split up the backends."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Refactored the code to create a helper file for migrations."},{"line_number":13,"context_line":"The code to get a foreign key constraint is more specific"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAPH%2F%2Fbto%3D","line":10,"in_reply_to":"AAAAPH%2F%2FbwI%3D","updated":"2013-06-04 02:20:44.000000000","message":"Done","commit_id":"436fde569b379536715ccda77c388049149a1b3c"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"142a7e005732360279288a22b0d3e47469c5c4bb","unresolved":false,"context_lines":[{"line_number":7,"context_line":"drop user and group constraints"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Drop foreign keys that point to user and group tables from"},{"line_number":10,"context_line":"other tables. This is required to be able to split up the backends."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Refactored the code to create a helper file for migrations."},{"line_number":13,"context_line":"The code to get a foreign key constraint is more specific"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"AAAAPX%2F%2F0Hw%3D","line":10,"updated":"2013-06-09 14:25:13.000000000","message":"is there a blueprint that should be referenced?","commit_id":"42c331c636587ae29d880cb8fd2b2152350af0ee"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"cc8c914c08ab774ba0abda2fcbdd47d662b30599","unresolved":false,"context_lines":[{"line_number":7,"context_line":"drop user and group constraints"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Drop foreign keys that point to user and group tables from"},{"line_number":10,"context_line":"other tables. This is required to be able to split up the backends."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Refactored the code to create a helper file for migrations."},{"line_number":13,"context_line":"The code to get a foreign key constraint is more specific"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"AAAAPX%2F%2Fys0%3D","line":10,"in_reply_to":"AAAAPX%2F%2F0Hw%3D","updated":"2013-06-10 15:40:41.000000000","message":"Yep.  https://blueprints.launchpad.net/keystone/+spec/extract-projects-from-id","commit_id":"42c331c636587ae29d880cb8fd2b2152350af0ee"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"142a7e005732360279288a22b0d3e47469c5c4bb","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Drop foreign keys that point to user and group tables from"},{"line_number":10,"context_line":"other tables. This is required to be able to split up the backends."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Refactored the code to create a helper file for migrations."},{"line_number":13,"context_line":"The code to get a foreign key constraint is more specific"},{"line_number":14,"context_line":"what it is lookin for: Both a column name match and a"},{"line_number":15,"context_line":"instance of ForeignKeyConstraint match is required."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"AAAAPX%2F%2F0H0%3D","line":12,"updated":"2013-06-09 14:25:13.000000000","message":"I don\u0027t see the rafactoring to create a helper file for migrations in this change, so suggest remove this paragraph.","commit_id":"42c331c636587ae29d880cb8fd2b2152350af0ee"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"142a7e005732360279288a22b0d3e47469c5c4bb","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Refactored the code to create a helper file for migrations."},{"line_number":13,"context_line":"The code to get a foreign key constraint is more specific"},{"line_number":14,"context_line":"what it is lookin for: Both a column name match and a"},{"line_number":15,"context_line":"instance of ForeignKeyConstraint match is required."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: Iea78ddca4ef5ea5ca1bb542cba81da8aefa95b6b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"AAAAPX%2F%2F0IA%3D","line":14,"updated":"2013-06-09 14:25:13.000000000","message":"change \"lookin\" to \"looking\" (or lookin\u0027)","commit_id":"42c331c636587ae29d880cb8fd2b2152350af0ee"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"cc8c914c08ab774ba0abda2fcbdd47d662b30599","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Refactored the code to create a helper file for migrations."},{"line_number":13,"context_line":"The code to get a foreign key constraint is more specific"},{"line_number":14,"context_line":"what it is lookin for: Both a column name match and a"},{"line_number":15,"context_line":"instance of ForeignKeyConstraint match is required."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: Iea78ddca4ef5ea5ca1bb542cba81da8aefa95b6b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"AAAAPX%2F%2Fyss%3D","line":14,"in_reply_to":"AAAAPX%2F%2F0IA%3D","updated":"2013-06-10 15:40:41.000000000","message":"dropped the whole paragraph","commit_id":"42c331c636587ae29d880cb8fd2b2152350af0ee"}],"keystone/common/sql/migrate_repo/versions/026_drop_user_group_constraints.py":[{"author":{"_account_id":6460,"name":"Brad Topol","email":"btopol@us.ibm.com","username":"btopol"},"change_message_id":"fe9842f6b87aed86e671c846be62da6f464d977b","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    group_project_metadata_table \u003d sqlalchemy.Table(\u0027group_project_metadata\u0027,"},{"line_number":35,"context_line":"                                                    meta, autoload\u003dTrue)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    constraints \u003d [{\u0027table\u0027: user_domain_metadata_table,"},{"line_number":38,"context_line":"                    \u0027fk_column\u0027: \u0027user_id\u0027,"},{"line_number":39,"context_line":"                    \u0027ref_column\u0027: user_table.c.id},"},{"line_number":40,"context_line":"                   {\u0027table\u0027: group_domain_metadata_table,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPX%2F%2F%2BdE%3D","line":37,"updated":"2013-06-04 19:21:27.000000000","message":"This data structure looks hardcoded to me.  Once its created an returned to the caller, how do they know which table is the group_domain_metadata_table, which is the user_project_metadata_table, etc?  Are they expected to just know that the first one is the user_domain_metadata_table and the second one is the group_domain_metadata_table and so on?","commit_id":"b082e7ed6d23bba5944706593b112aa701411c5a"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"173535685b30bee48fef987252c1c3b2bb9f3d0e","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    group_project_metadata_table \u003d sqlalchemy.Table(\u0027group_project_metadata\u0027,"},{"line_number":35,"context_line":"                                                    meta, autoload\u003dTrue)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    constraints \u003d [{\u0027table\u0027: user_domain_metadata_table,"},{"line_number":38,"context_line":"                    \u0027fk_column\u0027: \u0027user_id\u0027,"},{"line_number":39,"context_line":"                    \u0027ref_column\u0027: user_table.c.id},"},{"line_number":40,"context_line":"                   {\u0027table\u0027: group_domain_metadata_table,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPX%2F%2F%2BYY%3D","line":37,"in_reply_to":"AAAAPX%2F%2F%2BdE%3D","updated":"2013-06-04 22:36:31.000000000","message":"This is the migration.  These values will never change, just passed to code that either creates or drops the constraints.  The documentation for the format is in migration_helpers.remove_constraints and  add_constraints","commit_id":"b082e7ed6d23bba5944706593b112aa701411c5a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"142a7e005732360279288a22b0d3e47469c5c4bb","unresolved":false,"context_lines":[{"line_number":46,"context_line":"                   {\u0027table\u0027: group_project_metadata_table,"},{"line_number":47,"context_line":"                    \u0027fk_column\u0027: \u0027group_id\u0027,"},{"line_number":48,"context_line":"                    \u0027ref_column\u0027: group_table.c.id},"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"                   ]"},{"line_number":51,"context_line":"    return constraints"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAPX%2F%2F0Hs%3D","line":49,"updated":"2013-06-09 14:25:13.000000000","message":"remove extra blank line.","commit_id":"42c331c636587ae29d880cb8fd2b2152350af0ee"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"cc8c914c08ab774ba0abda2fcbdd47d662b30599","unresolved":false,"context_lines":[{"line_number":46,"context_line":"                   {\u0027table\u0027: group_project_metadata_table,"},{"line_number":47,"context_line":"                    \u0027fk_column\u0027: \u0027group_id\u0027,"},{"line_number":48,"context_line":"                    \u0027ref_column\u0027: group_table.c.id},"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"                   ]"},{"line_number":51,"context_line":"    return constraints"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAPX%2F%2FytY%3D","line":49,"in_reply_to":"AAAAPX%2F%2F0Hs%3D","updated":"2013-06-10 15:40:41.000000000","message":"Done","commit_id":"42c331c636587ae29d880cb8fd2b2152350af0ee"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2f999fedabaa933bcfd7fa45b8dc0dba286e0f3a","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    meta \u003d sqlalchemy.MetaData()"},{"line_number":24,"context_line":"    meta.bind \u003d migrate_engine"},{"line_number":25,"context_line":"    user_table \u003d sqlalchemy.Table(\u0027user\u0027, meta, autoload\u003dTrue)"},{"line_number":26,"context_line":"    sqlalchemy.Table(\u0027project\u0027, meta, autoload\u003dTrue)"},{"line_number":27,"context_line":"    group_table \u003d sqlalchemy.Table(\u0027group\u0027, meta, autoload\u003dTrue)"},{"line_number":28,"context_line":"    user_domain_metadata_table \u003d sqlalchemy.Table(\u0027user_domain_metadata\u0027,"},{"line_number":29,"context_line":"                                                  meta, autoload\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPX%2F%2Fr6I%3D","line":26,"updated":"2013-06-12 19:53:31.000000000","message":"is this needed? seems like it wouldn\u0027t do anything but check if the table exists? could use a comment.","commit_id":"7b7800608af87e5f84df97f8fef7a69b4f435946"}],"keystone/common/sql/migration_helpers.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"59ef49e235237c07090b1d85b9466bf7096ea845","unresolved":false,"context_lines":[{"line_number":22,"context_line":"#Different RDBMSs use different schemes for naming the Foreign Key"},{"line_number":23,"context_line":"#Constraints.  SQLAlchemy does not yet attempt to determine the name"},{"line_number":24,"context_line":"#for the constraint, and instead attempts to deduce it from the column."},{"line_number":25,"context_line":"#This fails on MySQL."},{"line_number":26,"context_line":"def get_fkey_constraint_name(table, column_name):"},{"line_number":27,"context_line":"    fkeys \u003d [fk for fk in table.constraints"},{"line_number":28,"context_line":"             if (column_name in fk.columns and"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPH%2F%2Fbv0%3D","line":25,"updated":"2013-06-04 02:02:34.000000000","message":"Really really small NIT here, should there be spacing after the # signs and before the words? I haven\u0027t seen a comment format like this in Keystone.","commit_id":"436fde569b379536715ccda77c388049149a1b3c"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"7058881dd9010ba16e9ef332b1731f3cd4ba3082","unresolved":false,"context_lines":[{"line_number":22,"context_line":"#Different RDBMSs use different schemes for naming the Foreign Key"},{"line_number":23,"context_line":"#Constraints.  SQLAlchemy does not yet attempt to determine the name"},{"line_number":24,"context_line":"#for the constraint, and instead attempts to deduce it from the column."},{"line_number":25,"context_line":"#This fails on MySQL."},{"line_number":26,"context_line":"def get_fkey_constraint_name(table, column_name):"},{"line_number":27,"context_line":"    fkeys \u003d [fk for fk in table.constraints"},{"line_number":28,"context_line":"             if (column_name in fk.columns and"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPH%2F%2Fbtg%3D","line":25,"in_reply_to":"AAAAPH%2F%2Fbv0%3D","updated":"2013-06-04 02:20:44.000000000","message":"Done","commit_id":"436fde569b379536715ccda77c388049149a1b3c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"59ef49e235237c07090b1d85b9466bf7096ea845","unresolved":false,"context_lines":[{"line_number":37,"context_line":"#         this table."},{"line_number":38,"context_line":"#\u0027fk_column\u0027: the name of a column on the above table,  THe constraint will be"},{"line_number":39,"context_line":"#             added to or dropped from this column"},{"line_number":40,"context_line":"#\u0027ref_column\u0027:a sqlalchemy column object.  This is the reference column for the"},{"line_number":41,"context_line":"#             constraint."},{"line_number":42,"context_line":"def remove_constraints(constraints):"},{"line_number":43,"context_line":"    for constraint_def in constraints:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPH%2F%2Fbvw%3D","line":40,"updated":"2013-06-04 02:02:34.000000000","message":"Same comment here","commit_id":"436fde569b379536715ccda77c388049149a1b3c"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"7058881dd9010ba16e9ef332b1731f3cd4ba3082","unresolved":false,"context_lines":[{"line_number":37,"context_line":"#         this table."},{"line_number":38,"context_line":"#\u0027fk_column\u0027: the name of a column on the above table,  THe constraint will be"},{"line_number":39,"context_line":"#             added to or dropped from this column"},{"line_number":40,"context_line":"#\u0027ref_column\u0027:a sqlalchemy column object.  This is the reference column for the"},{"line_number":41,"context_line":"#             constraint."},{"line_number":42,"context_line":"def remove_constraints(constraints):"},{"line_number":43,"context_line":"    for constraint_def in constraints:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPH%2F%2Fbtc%3D","line":40,"in_reply_to":"AAAAPH%2F%2Fbvw%3D","updated":"2013-06-04 02:20:44.000000000","message":"Done","commit_id":"436fde569b379536715ccda77c388049149a1b3c"}],"keystone/identity/backends/sql.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"142a7e005732360279288a22b0d3e47469c5c4bb","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        session \u003d self.get_session()"},{"line_number":219,"context_line":"        self.get_project(tenant_id)"},{"line_number":220,"context_line":"        user_refs \u003d []"},{"line_number":221,"context_line":"        for user_id in self.get_project_user_ids(tenant_id):"},{"line_number":222,"context_line":"            query \u003d session.query(User)"},{"line_number":223,"context_line":"            query \u003d query.filter(User.id \u003d\u003d user_id)"},{"line_number":224,"context_line":"            user_ref \u003d query.first()"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAPX%2F%2F0Ho%3D","line":221,"updated":"2013-06-09 14:25:13.000000000","message":"I can see that this will need to change once projects are in separate backend from groups, but does it have to change now?","commit_id":"42c331c636587ae29d880cb8fd2b2152350af0ee"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"cc8c914c08ab774ba0abda2fcbdd47d662b30599","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        session \u003d self.get_session()"},{"line_number":219,"context_line":"        self.get_project(tenant_id)"},{"line_number":220,"context_line":"        user_refs \u003d []"},{"line_number":221,"context_line":"        for user_id in self.get_project_user_ids(tenant_id):"},{"line_number":222,"context_line":"            query \u003d session.query(User)"},{"line_number":223,"context_line":"            query \u003d query.filter(User.id \u003d\u003d user_id)"},{"line_number":224,"context_line":"            user_ref \u003d query.first()"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAPX%2F%2Fytk%3D","line":221,"in_reply_to":"AAAAPX%2F%2F0Ho%3D","updated":"2013-06-10 15:40:41.000000000","message":"This patc his prep work for that effort.  Trying to avoid a big bang","commit_id":"42c331c636587ae29d880cb8fd2b2152350af0ee"}]}
