)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"54a063a9f74d4bbd55d7ac8750696761226080b8","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2016-01-06 11:41:52 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"SQL migrations for implied roles"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"blueprint implied-roles"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I20ecb00a51cd863c40d3c2922b6a328e1029ec2f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"fa69d971_0124635b","line":8,"updated":"2016-01-06 17:37:51.000000000","message":"maybe add at least some description as to what is happening in the migration.","commit_id":"127d03a9fd318a2fcb073979b720a4faa3bba30a"}],"keystone/common/sql/migrate_repo/versions/087_implied_roles.py":[{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"8e40967c908025b7db15a430bd4e3cdde9aeb37d","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    meta.bind \u003d migrate_engine"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    implied_role \u003d sql.Table("},{"line_number":29,"context_line":"        \u0027implied_role\u0027, meta,"},{"line_number":30,"context_line":"        sql.Column(\u0027prior_role_id\u0027, sql.String(length\u003d64), primary_key\u003dTrue),"},{"line_number":31,"context_line":"        sql.Column("},{"line_number":32,"context_line":"            \u0027implied_role_id\u0027, sql.String(length\u003d64), primary_key\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_a1f6b45a","line":29,"range":{"start_line":29,"start_character":9,"end_line":29,"end_character":21},"updated":"2016-01-06 19:24:00.000000000","message":"Why can\u0027t we reuse the role table and add the additional columns? Implied roles are essentially \"roles\". Having two different table for roles doesn\u0027t seem all that intuitive.","commit_id":"3ca0cc2edb6bfa58f4f1fed1acc21ec9b67b7b99"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"07cf584785be767f2ebb076e416eb8f9e94d4900","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    meta.bind \u003d migrate_engine"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    implied_role \u003d sql.Table("},{"line_number":29,"context_line":"        \u0027implied_role\u0027, meta,"},{"line_number":30,"context_line":"        sql.Column(\u0027prior_role_id\u0027, sql.String(length\u003d64), primary_key\u003dTrue),"},{"line_number":31,"context_line":"        sql.Column("},{"line_number":32,"context_line":"            \u0027implied_role_id\u0027, sql.String(length\u003d64), primary_key\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_7bdcc074","line":29,"range":{"start_line":29,"start_character":9,"end_line":29,"end_character":21},"in_reply_to":"fa69d971_a1f6b45a","updated":"2016-01-07 15:17:21.000000000","message":"It is a many-to-many relationship.  Can\u0027t do that in a single table.","commit_id":"3ca0cc2edb6bfa58f4f1fed1acc21ec9b67b7b99"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"550f8a8bfc5ad6693ee78ea69b675186ec9d8a8d","unresolved":false,"context_lines":[{"line_number":10,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"# This is a placeholder for Kilo backports. Do not use this number for new"},{"line_number":14,"context_line":"# Liberty work. New Liberty work starts after all the placeholders."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"fa69d971_e96c58d2","line":13,"updated":"2016-01-07 21:05:10.000000000","message":"oops","commit_id":"6bb1b86222221e5de931f4e5d6afd04fd9bbd0ad"}],"keystone/tests/unit/test_sql_upgrade.py":[{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"ab57a9bd568dd41990c2c59353d07d19071cfee9","unresolved":false,"context_lines":[{"line_number":776,"context_line":"        self.upgrade(87)"},{"line_number":777,"context_line":"        self.assertTableColumns(\u0027implied_role\u0027,"},{"line_number":778,"context_line":"                                [\u0027prior_role_id\u0027, \u0027implied_role_id\u0027])"},{"line_number":779,"context_line":"        self.assertTrue(self.does_fk_exist(\u0027implied_role\u0027, \u0027prior_role_id\u0027))"},{"line_number":780,"context_line":"        self.assertTrue(self.does_fk_exist(\u0027implied_role\u0027, \u0027implied_role_id\u0027))"},{"line_number":781,"context_line":""},{"line_number":782,"context_line":"    def test_add_config_registration(self):"},{"line_number":783,"context_line":"        config_registration \u003d \u0027config_register\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa69d971_b33ed127","line":780,"range":{"start_line":779,"start_character":8,"end_line":780,"end_character":78},"updated":"2016-01-07 20:19:26.000000000","message":"I think this should still work in sqlite....deleting an FK can\u0027t be checked, but I think additions are OK....if not, need to just out a yucky if clause ahead of it","commit_id":"6bb1b86222221e5de931f4e5d6afd04fd9bbd0ad"}]}
