)]}'
{"keystone/common/sql/migrate_repo/versions/102_alter_service_type_unique.py":[{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"bf995f7a8e688cd34292ff49a36bb4ed7483a680","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    service_table \u003d sql.Table(_SERVICE_TABLE_NAME, meta, autoload\u003dTrue)"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    migrate.UniqueConstraint(\u0027type\u0027, table\u003dservice_table,"},{"line_number":25,"context_line":"                             name\u003d\u0027make_type_unique\u0027).create()"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_3f9becca","line":25,"range":{"start_line":25,"start_character":36,"end_line":25,"end_character":51},"updated":"2016-04-25 20:43:26.000000000","message":"suggest something that could identify the table being affected, like: service_type_unique","commit_id":"035f5b879a24ff12377071281b793dddcfac23c2"},{"author":{"_account_id":19985,"name":"Ryosuke Mizuno","email":"r-mizuno@rs.jp.nec.com","username":"r-mizuno"},"change_message_id":"e878f28ca6e199ec3e3e296d488551b6e6af1cad","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    service_table \u003d sql.Table(_SERVICE_TABLE_NAME, meta, autoload\u003dTrue)"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    migrate.UniqueConstraint(\u0027type\u0027, table\u003dservice_table,"},{"line_number":25,"context_line":"                             name\u003d\u0027make_type_unique\u0027).create()"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_a96ea92c","line":25,"range":{"start_line":25,"start_character":36,"end_line":25,"end_character":51},"in_reply_to":"1a122d0e_3f9becca","updated":"2016-04-26 02:37:08.000000000","message":"Done","commit_id":"035f5b879a24ff12377071281b793dddcfac23c2"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"d7a0006071170f204970bfc82e1023f74075ffda","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import migrate"},{"line_number":14,"context_line":"import sqlalchemy as sql"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"_SERVICE_TABLE_NAME \u003d \u0027service\u0027"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a122d0e_69b3f19a","line":15,"updated":"2016-04-26 02:49:15.000000000","message":"(nit) missing a newline","commit_id":"d78b0442dd1c59db5d0cf0484686faf4718628aa"},{"author":{"_account_id":19985,"name":"Ryosuke Mizuno","email":"r-mizuno@rs.jp.nec.com","username":"r-mizuno"},"change_message_id":"ff602e4d2904773485491b8394b3a48af424da96","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import migrate"},{"line_number":14,"context_line":"import sqlalchemy as sql"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"_SERVICE_TABLE_NAME \u003d \u0027service\u0027"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"dab17558_5af8bb49","line":15,"in_reply_to":"1a122d0e_69b3f19a","updated":"2016-05-09 05:50:37.000000000","message":"Done","commit_id":"d78b0442dd1c59db5d0cf0484686faf4718628aa"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"b8573f97c42ccccaeead37ba6f1e6c1273933daa","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    service_table \u003d sql.Table(_SERVICE_TABLE_NAME, meta, autoload\u003dTrue)"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    migrate.UniqueConstraint(\u0027type\u0027, table\u003dservice_table,"},{"line_number":26,"context_line":"                             name\u003d\u0027service_type_unique\u0027).create()"}],"source_content_type":"text/x-python","patch_set":5,"id":"dab17558_6a5d8446","line":26,"updated":"2016-05-10 23:47:59.000000000","message":"What happens if someone has duplicate services already? this is likely going to fail","commit_id":"f0fefe115256b7683108f19517ce644e9f117c17"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"233e39e7eb518ea046d7f693a04646adc611c7b4","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    service_table \u003d sql.Table(_SERVICE_TABLE_NAME, meta, autoload\u003dTrue)"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    migrate.UniqueConstraint(\u0027type\u0027, table\u003dservice_table,"},{"line_number":26,"context_line":"                             name\u003d\u0027service_type_unique\u0027).create()"}],"source_content_type":"text/x-python","patch_set":5,"id":"7aa08908_3f2adee7","line":26,"in_reply_to":"dab17558_6a5d8446","updated":"2016-06-17 05:30:04.000000000","message":"++ and you can\u0027t fix it easily. If you want a migration to remove duplicates, which one you remove ? Is it the right one ?","commit_id":"f0fefe115256b7683108f19517ce644e9f117c17"}],"keystone/tests/unit/test_sql_upgrade.py":[{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"bf995f7a8e688cd34292ff49a36bb4ed7483a680","unresolved":false,"context_lines":[{"line_number":1154,"context_line":"            self.assertFalse(self.does_constraint_exist(\u0027role\u0027,"},{"line_number":1155,"context_line":"                                                        \u0027ixu_role_name\u0027))"},{"line_number":1156,"context_line":""},{"line_number":1157,"context_line":"    def test_migration_102(self):"},{"line_number":1158,"context_line":"        \"\"\"Migration 102 should make the service \u0027type\u0027 column unique.\"\"\""},{"line_number":1159,"context_line":"        self.upgrade(101)"},{"line_number":1160,"context_line":"        session \u003d self.sessionmaker()"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_3f376cb1","line":1157,"range":{"start_line":1157,"start_character":4,"end_line":1157,"end_character":32},"updated":"2016-04-25 20:43:26.000000000","message":"what this test is testing? that we can add two services with different types? Don\u0027t think it is necessary","commit_id":"035f5b879a24ff12377071281b793dddcfac23c2"},{"author":{"_account_id":19985,"name":"Ryosuke Mizuno","email":"r-mizuno@rs.jp.nec.com","username":"r-mizuno"},"change_message_id":"e878f28ca6e199ec3e3e296d488551b6e6af1cad","unresolved":false,"context_lines":[{"line_number":1154,"context_line":"            self.assertFalse(self.does_constraint_exist(\u0027role\u0027,"},{"line_number":1155,"context_line":"                                                        \u0027ixu_role_name\u0027))"},{"line_number":1156,"context_line":""},{"line_number":1157,"context_line":"    def test_migration_102(self):"},{"line_number":1158,"context_line":"        \"\"\"Migration 102 should make the service \u0027type\u0027 column unique.\"\"\""},{"line_number":1159,"context_line":"        self.upgrade(101)"},{"line_number":1160,"context_line":"        session \u003d self.sessionmaker()"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_896bed1d","line":1157,"range":{"start_line":1157,"start_character":4,"end_line":1157,"end_character":32},"in_reply_to":"1a122d0e_3f376cb1","updated":"2016-04-26 02:37:08.000000000","message":"Done","commit_id":"035f5b879a24ff12377071281b793dddcfac23c2"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"d7a0006071170f204970bfc82e1023f74075ffda","unresolved":false,"context_lines":[{"line_number":1170,"context_line":""},{"line_number":1171,"context_line":"        self.upgrade(102)"},{"line_number":1172,"context_line":"        add_service(\u0027compute\u0027)"},{"line_number":1173,"context_line":"        self.assertRaises((sqlalchemy.exc.IntegrityError,"},{"line_number":1174,"context_line":"                          db_exception.DBError),"},{"line_number":1175,"context_line":"                          add_service, \u0027compute\u0027)"},{"line_number":1176,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a122d0e_09c23de9","line":1173,"updated":"2016-04-26 02:49:15.000000000","message":"Is it possible that this actually raise two different exceptions? I\u0027m guessing that it won\u0027t and we should catch the one that we expect.","commit_id":"d78b0442dd1c59db5d0cf0484686faf4718628aa"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"0ab074c54837382fe5fa4f54258d4fbac28dbc06","unresolved":false,"context_lines":[{"line_number":1170,"context_line":""},{"line_number":1171,"context_line":"        self.upgrade(102)"},{"line_number":1172,"context_line":"        add_service(\u0027compute\u0027)"},{"line_number":1173,"context_line":"        self.assertRaises((sqlalchemy.exc.IntegrityError,"},{"line_number":1174,"context_line":"                          db_exception.DBError),"},{"line_number":1175,"context_line":"                          add_service, \u0027compute\u0027)"},{"line_number":1176,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a122d0e_b40ee789","line":1173,"in_reply_to":"1a122d0e_09c23de9","updated":"2016-04-26 20:05:26.000000000","message":"+1","commit_id":"d78b0442dd1c59db5d0cf0484686faf4718628aa"},{"author":{"_account_id":19985,"name":"Ryosuke Mizuno","email":"r-mizuno@rs.jp.nec.com","username":"r-mizuno"},"change_message_id":"ff602e4d2904773485491b8394b3a48af424da96","unresolved":false,"context_lines":[{"line_number":1170,"context_line":""},{"line_number":1171,"context_line":"        self.upgrade(102)"},{"line_number":1172,"context_line":"        add_service(\u0027compute\u0027)"},{"line_number":1173,"context_line":"        self.assertRaises((sqlalchemy.exc.IntegrityError,"},{"line_number":1174,"context_line":"                          db_exception.DBError),"},{"line_number":1175,"context_line":"                          add_service, \u0027compute\u0027)"},{"line_number":1176,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"dab17558_daeb0b77","line":1173,"in_reply_to":"1a122d0e_b40ee789","updated":"2016-05-09 05:50:37.000000000","message":"Done","commit_id":"d78b0442dd1c59db5d0cf0484686faf4718628aa"}]}
