)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"deef716b003ecb0fc28460f8f60f94f9c01153b2","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Make service type unique"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Previously, mutliple services could be of the same type."},{"line_number":10,"context_line":"This change makes it."},{"line_number":11,"context_line":"so that services must have unique type when using"},{"line_number":12,"context_line":"sql backend."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"fa69d971_2355641c","line":10,"range":{"start_line":10,"start_character":20,"end_line":10,"end_character":21},"updated":"2016-01-04 12:50:46.000000000","message":"remove \u0027.\u0027 and no return here.","commit_id":"65cdd984510c98c44764d2caa76a7efa0be54876"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"deef716b003ecb0fc28460f8f60f94f9c01153b2","unresolved":false,"context_lines":[{"line_number":12,"context_line":"sql backend."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Ie6177de83ecef343638d374d7af1c574f8ffe0c2"},{"line_number":15,"context_line":"Closes: 1259425"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"fa69d971_a33f14d5","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":15},"updated":"2016-01-04 12:50:46.000000000","message":"Closes-Bug: #125..","commit_id":"65cdd984510c98c44764d2caa76a7efa0be54876"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"e85be5f4bd9bc86aba4ae880e1f2129853c282a6","unresolved":false,"context_lines":[{"line_number":12,"context_line":"sql backend"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Ie6177de83ecef343638d374d7af1c574f8ffe0c2"},{"line_number":15,"context_line":"Closes-Bug: #1259425"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9aed3d3a_0f0fb637","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":20},"updated":"2016-02-29 14:52:53.000000000","message":"The bugreport says about non-unique name, not about non-unique type. Please refer to another bugreport.","commit_id":"f09efc491524e9082a49a186e239fd8424b2a4ef"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"57c014d7dbdf96b0ba3354deaaa01451b36c10ab","unresolved":false,"context_lines":[{"line_number":12,"context_line":"sql backend"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Ie6177de83ecef343638d374d7af1c574f8ffe0c2"},{"line_number":15,"context_line":"Closes-Bug: #1259425"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9aed3d3a_b4ea550d","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":20},"in_reply_to":"9aed3d3a_0f0fb637","updated":"2016-02-29 16:43:09.000000000","message":"In the comments on this bug report, lbragstad said: \"Going to abandon this per IRC discussion with morganfainberg and jamielennox in #openstack-keystone on Freenode.\n\nService name shouldn\u0027t be required since service type is already a required attribute of service and *should* be unique.\n\nA patch should be proposed to make service type completely unique.\"","commit_id":"f09efc491524e9082a49a186e239fd8424b2a4ef"}],"keystone/catalog/backends/sql.py":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"deef716b003ecb0fc28460f8f60f94f9c01153b2","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    extra \u003d sql.Column(sql.JsonBlob())"},{"line_number":60,"context_line":"    endpoints \u003d sqlalchemy.orm.relationship(\"Endpoint\", backref\u003d\"service\")"},{"line_number":61,"context_line":"    __table_args__ \u003d (sql.UniqueConstraint("},{"line_number":62,"context_line":"                      \u0027type\u0027, name\u003d\u0027add_service_type_unique\u0027), {})"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"class Endpoint(sql.ModelBase, sql.DictBase):"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_4356585d","line":62,"range":{"start_line":62,"start_character":62,"end_line":62,"end_character":65},"updated":"2016-01-04 12:50:46.000000000","message":"this change is needn\u0027t, `__table_args__` could be a dict, a tuple, or the tuple with Keyword arguments.\n\nI don\u0027t know why keystone use {} it everywhere, but I bet it\u0027s useless, besides, it\u0027s irrelevant.\n\n\nsee: http://docs.sqlalchemy.org/en/rel_0_8/orm/extensions/declarative.html#table-configuration for details.","commit_id":"65cdd984510c98c44764d2caa76a7efa0be54876"}],"keystone/common/sql/migrate_repo/versions/087_add_service_type_unique.py":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"deef716b003ecb0fc28460f8f60f94f9c01153b2","unresolved":false,"context_lines":[{"line_number":18,"context_line":"    meta \u003d MetaData(bind\u003dmigrate_engine)"},{"line_number":19,"context_line":"    services \u003d Table(\u0027service\u0027, meta, autoload\u003dTrue)"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    UniqueConstraint(\u0027type\u0027, table\u003dservices,"},{"line_number":22,"context_line":"                     name\u003d\u0027add_service_type_unique\u0027).create()"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_237ec4ae","line":22,"range":{"start_line":21,"start_character":0,"end_line":22,"end_character":61},"updated":"2016-01-04 12:50:46.000000000","message":"this change needs a testcase that prove the duplicate service creation will hit http_client.CONFLICT exception.\n\nyou may consider to add a testcase in test_v3_catalog.py.","commit_id":"65cdd984510c98c44764d2caa76a7efa0be54876"}],"keystone/tests/unit/test_sql_upgrade.py":[{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"57c014d7dbdf96b0ba3354deaaa01451b36c10ab","unresolved":false,"context_lines":[{"line_number":843,"context_line":"        \"\"\"Migration 93 should make the service `type` column unique.\"\"\""},{"line_number":844,"context_line":"        self.upgrade(92)"},{"line_number":845,"context_line":"        session \u003d self.Session()"},{"line_number":846,"context_line":" "},{"line_number":847,"context_line":"        def add_service(service_type):"},{"line_number":848,"context_line":"            service_id \u003d uuid.uuid4().hex"},{"line_number":849,"context_line":"            service \u003d {"}],"source_content_type":"text/x-python","patch_set":3,"id":"9aed3d3a_b406d5cb","line":846,"range":{"start_line":846,"start_character":0,"end_line":846,"end_character":1},"updated":"2016-02-29 16:43:09.000000000","message":"remove whitespaces","commit_id":"f09efc491524e9082a49a186e239fd8424b2a4ef"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"e85be5f4bd9bc86aba4ae880e1f2129853c282a6","unresolved":false,"context_lines":[{"line_number":877,"context_line":"        service \u003d get_service(second_service_id)"},{"line_number":878,"context_line":"        self.assertEqual(second_service_id, service.id)"},{"line_number":879,"context_line":"        self.assertEqual(\u0027image\u0027, service.type)"},{"line_number":880,"context_line":""},{"line_number":881,"context_line":""},{"line_number":882,"context_line":"class VersionTests(SqlMigrateBase):"},{"line_number":883,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9aed3d3a_cf814ec5","line":880,"updated":"2016-02-29 14:52:53.000000000","message":"I don\u0027t quite understand what is being tested here. Could you please explain?","commit_id":"f09efc491524e9082a49a186e239fd8424b2a4ef"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"57c014d7dbdf96b0ba3354deaaa01451b36c10ab","unresolved":false,"context_lines":[{"line_number":877,"context_line":"        service \u003d get_service(second_service_id)"},{"line_number":878,"context_line":"        self.assertEqual(second_service_id, service.id)"},{"line_number":879,"context_line":"        self.assertEqual(\u0027image\u0027, service.type)"},{"line_number":880,"context_line":""},{"line_number":881,"context_line":""},{"line_number":882,"context_line":"class VersionTests(SqlMigrateBase):"},{"line_number":883,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9aed3d3a_d428b935","line":880,"in_reply_to":"9aed3d3a_cf814ec5","updated":"2016-02-29 16:43:09.000000000","message":"We have some tests cases here: https://review.openstack.org/#/c/138130/1/keystone/tests/test_sql_upgrade.py (lbragtad tried to fix that before)","commit_id":"f09efc491524e9082a49a186e239fd8424b2a4ef"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"e85be5f4bd9bc86aba4ae880e1f2129853c282a6","unresolved":false,"context_lines":[{"line_number":878,"context_line":"        self.assertEqual(second_service_id, service.id)"},{"line_number":879,"context_line":"        self.assertEqual(\u0027image\u0027, service.type)"},{"line_number":880,"context_line":""},{"line_number":881,"context_line":""},{"line_number":882,"context_line":"class VersionTests(SqlMigrateBase):"},{"line_number":883,"context_line":""},{"line_number":884,"context_line":"    _initial_db_version \u003d migrate_repo.DB_INIT_VERSION"}],"source_content_type":"text/x-python","patch_set":3,"id":"9aed3d3a_ef8892c7","line":881,"updated":"2016-02-29 14:52:53.000000000","message":"There needs to be a test showing what will happen if there are already 2 services with the same type.","commit_id":"f09efc491524e9082a49a186e239fd8424b2a4ef"}]}
