)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"0a3970d691bc10e6cf0417710fb1c5a50e1a7372","unresolved":false,"context_lines":[{"line_number":32,"context_line":"Can anyone shed light on whether this is how we are meant to be"},{"line_number":33,"context_line":"doing this?"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Partially Implements: blueprint blueprint assignment-manager-cleanup"},{"line_number":36,"context_line":"Change-Id: Iefa13b64084b8e71c881ae08e1ec434d24756c17"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"da85f559_f4868012","line":35,"updated":"2015-11-08 16:20:46.000000000","message":"too many blueprints","commit_id":"9da32b351be3d3ee29709708351bb1e58bfd2715"}],"keystone/assignment/V8_backends/ldap.py":[{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"15d9f7d80faec8f150e74fd94953ce8f9b1a9a55","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2012-2013 OpenStack Foundation"},{"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":4,"id":"da85f559_5403ccb8","line":1,"updated":"2015-11-08 16:07:30.000000000","message":"This file is just copy of what we currently had in backends/ldap.py","commit_id":"9da32b351be3d3ee29709708351bb1e58bfd2715"}],"keystone/assignment/V8_backends/sql.py":[{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"15d9f7d80faec8f150e74fd94953ce8f9b1a9a55","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2012-13 OpenStack Foundation"},{"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":4,"id":"da85f559_b4f6b8d5","line":1,"updated":"2015-11-08 16:07:30.000000000","message":"This file is just copy of what we currently had in backends/sql.py","commit_id":"9da32b351be3d3ee29709708351bb1e58bfd2715"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"9cf0064d0366719b10af1541576ec0b16bea7c36","unresolved":false,"context_lines":[{"line_number":426,"context_line":"            q.delete(False)"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"class RoleAssignment(sql.ModelBase, sql.DictBase):"},{"line_number":430,"context_line":"    __tablename__ \u003d \u0027assignment\u0027"},{"line_number":431,"context_line":"    attributes \u003d [\u0027type\u0027, \u0027actor_id\u0027, \u0027target_id\u0027, \u0027role_id\u0027, \u0027inherited\u0027]"},{"line_number":432,"context_line":"    # NOTE(henry-nash); Postgres requires a name to be defined for an Enum"}],"source_content_type":"text/x-python","patch_set":17,"id":"ba8a016a_096d2ccc","line":429,"updated":"2015-11-20 17:29:36.000000000","message":"I don\u0027t like the idea of maintaining two different versions of the models. For a variety of reasons I would rather have the V8 driver make any model changes transparent to V8 consumers.","commit_id":"57312ff1dc92eeed91df9c8d03db71fc5a6b44e5"}],"keystone/assignment/core.py":[{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"3a046c054512dea8ee393b088c483deff4b98de6","unresolved":false,"context_lines":[{"line_number":834,"context_line":"# class to the V8 class. Do not modify any of the method signatures in the Base"},{"line_number":835,"context_line":"# class - changes should only be made in the V8 and subsequent classes."},{"line_number":836,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":837,"context_line":"class AssignmentDriverBase(object):"},{"line_number":838,"context_line":""},{"line_number":839,"context_line":"    def _get_list_limit(self):"},{"line_number":840,"context_line":"        return CONF.assignment.list_limit or CONF.list_limit"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba8a016a_7eecdaba","line":837,"updated":"2015-11-19 22:43:21.000000000","message":"why do we need a base class here? Isn\u0027t what those versioned interfaces are for?","commit_id":"d0bf83c8dbad4fc4f041af20339de0d13757437b"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"f3885dae473fb282caebf1322938837de4dff4da","unresolved":false,"context_lines":[{"line_number":834,"context_line":"# class to the V8 class. Do not modify any of the method signatures in the Base"},{"line_number":835,"context_line":"# class - changes should only be made in the V8 and subsequent classes."},{"line_number":836,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":837,"context_line":"class AssignmentDriverBase(object):"},{"line_number":838,"context_line":""},{"line_number":839,"context_line":"    def _get_list_limit(self):"},{"line_number":840,"context_line":"        return CONF.assignment.list_limit or CONF.list_limit"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba8a016a_fee9aa7f","line":837,"in_reply_to":"ba8a016a_7eecdaba","updated":"2015-11-19 22:49:29.000000000","message":"So if you look at the dependant patch, you can see that as we remove methods we move them out of base into the V8...and new ones go in V9.  This way, we can allow V9 and V8 to still inherit those methods that are unchanged","commit_id":"d0bf83c8dbad4fc4f041af20339de0d13757437b"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"9cf0064d0366719b10af1541576ec0b16bea7c36","unresolved":false,"context_lines":[{"line_number":1135,"context_line":"        raise exception.NotImplemented()  # pragma: no cover"},{"line_number":1136,"context_line":""},{"line_number":1137,"context_line":""},{"line_number":1138,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":1139,"context_line":"class AssignmentDriverV9(AssignmentDriverBase):"},{"line_number":1140,"context_line":"    \"\"\"New or augmented methods in V9.\"\"\""},{"line_number":1141,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"ba8a016a_1749c48e","line":1138,"updated":"2015-11-20 17:29:36.000000000","message":"Is there any reason to redefine the metaclass?","commit_id":"57312ff1dc92eeed91df9c8d03db71fc5a6b44e5"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"028e3f8755751933ef37803f93e38359e5460cd1","unresolved":false,"context_lines":[{"line_number":1135,"context_line":"        raise exception.NotImplemented()  # pragma: no cover"},{"line_number":1136,"context_line":""},{"line_number":1137,"context_line":""},{"line_number":1138,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":1139,"context_line":"class AssignmentDriverV9(AssignmentDriverBase):"},{"line_number":1140,"context_line":"    \"\"\"New or augmented methods in V9.\"\"\""},{"line_number":1141,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"ba8a016a_75b59ece","line":1138,"in_reply_to":"ba8a016a_1749c48e","updated":"2015-11-20 22:18:59.000000000","message":"Do you mean why change this from how it was?  So we can have a common class containing the unchanged methods between the drivers.","commit_id":"57312ff1dc92eeed91df9c8d03db71fc5a6b44e5"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"ecb1b74ebfd76fc9b6e330d8604341ef9edd7d02","unresolved":false,"context_lines":[{"line_number":1135,"context_line":"        raise exception.NotImplemented()  # pragma: no cover"},{"line_number":1136,"context_line":""},{"line_number":1137,"context_line":""},{"line_number":1138,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":1139,"context_line":"class AssignmentDriverV9(AssignmentDriverBase):"},{"line_number":1140,"context_line":"    \"\"\"New or augmented methods in V9.\"\"\""},{"line_number":1141,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"ba8a016a_20e4b60b","line":1138,"in_reply_to":"ba8a016a_75b59ece","updated":"2015-11-20 22:43:36.000000000","message":"No, I mean redefining it as a metaclass. That should be inherited by subclasses already.","commit_id":"57312ff1dc92eeed91df9c8d03db71fc5a6b44e5"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"7e43a1595c090d1d04d6ff0d618bf5a6c116e7a9","unresolved":false,"context_lines":[{"line_number":1137,"context_line":""},{"line_number":1138,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":1139,"context_line":"class AssignmentDriverV9(AssignmentDriverBase):"},{"line_number":1140,"context_line":"    \"\"\"New or augmented methods in V9.\"\"\""},{"line_number":1141,"context_line":""},{"line_number":1142,"context_line":"    pass"},{"line_number":1143,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"ba8a016a_06b523cf","line":1140,"updated":"2015-11-20 14:20:28.000000000","message":"Yep, as noticed in https://review.openstack.org/#/c/242614/10/keystone/assignment/core.py\n\nThis doc isn\u0027t very descriptive.","commit_id":"57312ff1dc92eeed91df9c8d03db71fc5a6b44e5"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"7e43a1595c090d1d04d6ff0d618bf5a6c116e7a9","unresolved":false,"context_lines":[{"line_number":1144,"context_line":""},{"line_number":1145,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":1146,"context_line":"class AssignmentDriverV8(AssignmentDriverBase):"},{"line_number":1147,"context_line":"    \"\"\"Methods removed or augmented in later classes.\"\"\""},{"line_number":1148,"context_line":""},{"line_number":1149,"context_line":"    @versionutils.deprecated("},{"line_number":1150,"context_line":"        as_of\u003dversionutils.deprecated.MITAKA,"}],"source_content_type":"text/x-python","patch_set":17,"id":"ba8a016a_c6ae3b81","line":1147,"updated":"2015-11-20 14:20:28.000000000","message":"Same here.","commit_id":"57312ff1dc92eeed91df9c8d03db71fc5a6b44e5"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"9cf0064d0366719b10af1541576ec0b16bea7c36","unresolved":false,"context_lines":[{"line_number":1148,"context_line":""},{"line_number":1149,"context_line":"    @versionutils.deprecated("},{"line_number":1150,"context_line":"        as_of\u003dversionutils.deprecated.MITAKA,"},{"line_number":1151,"context_line":"        what\u003d\u0027keystone.assignment.AssignmentDriverV8\u0027,"},{"line_number":1152,"context_line":"        in_favor_of\u003d\u0027keystone.assignment.AssignmentDriverV9\u0027,"},{"line_number":1153,"context_line":"        remove_in\u003d+2)"},{"line_number":1154,"context_line":"    def __init__(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":17,"id":"ba8a016a_d7425c68","line":1151,"updated":"2015-11-20 17:29:36.000000000","message":"Should we use the entrypoint names here?","commit_id":"57312ff1dc92eeed91df9c8d03db71fc5a6b44e5"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"ecb1b74ebfd76fc9b6e330d8604341ef9edd7d02","unresolved":false,"context_lines":[{"line_number":1148,"context_line":""},{"line_number":1149,"context_line":"    @versionutils.deprecated("},{"line_number":1150,"context_line":"        as_of\u003dversionutils.deprecated.MITAKA,"},{"line_number":1151,"context_line":"        what\u003d\u0027keystone.assignment.AssignmentDriverV8\u0027,"},{"line_number":1152,"context_line":"        in_favor_of\u003d\u0027keystone.assignment.AssignmentDriverV9\u0027,"},{"line_number":1153,"context_line":"        remove_in\u003d+2)"},{"line_number":1154,"context_line":"    def __init__(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":17,"id":"ba8a016a_40dc5a46","line":1151,"in_reply_to":"ba8a016a_75dcbe18","updated":"2015-11-20 22:43:36.000000000","message":"Actually, disregard my comment. I was thinking this was the implementation and not just the interface.","commit_id":"57312ff1dc92eeed91df9c8d03db71fc5a6b44e5"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"028e3f8755751933ef37803f93e38359e5460cd1","unresolved":false,"context_lines":[{"line_number":1148,"context_line":""},{"line_number":1149,"context_line":"    @versionutils.deprecated("},{"line_number":1150,"context_line":"        as_of\u003dversionutils.deprecated.MITAKA,"},{"line_number":1151,"context_line":"        what\u003d\u0027keystone.assignment.AssignmentDriverV8\u0027,"},{"line_number":1152,"context_line":"        in_favor_of\u003d\u0027keystone.assignment.AssignmentDriverV9\u0027,"},{"line_number":1153,"context_line":"        remove_in\u003d+2)"},{"line_number":1154,"context_line":"    def __init__(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":17,"id":"ba8a016a_75dcbe18","line":1151,"in_reply_to":"ba8a016a_d7425c68","updated":"2015-11-20 22:18:59.000000000","message":"apologies, not sure what you mean by entry point? Do you mean make it \u0027keystone.assignment.core.AssignmentDriverV8\"?","commit_id":"57312ff1dc92eeed91df9c8d03db71fc5a6b44e5"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"b9baadac411fa20a005ec847d105fcaf8bd3c56c","unresolved":false,"context_lines":[{"line_number":1191,"context_line":"    Method signature (or meaning) changed - wrap the old method in a new"},{"line_number":1192,"context_line":"                                            signature here, and munge the input"},{"line_number":1193,"context_line":"                                            and output parameters accordingly."},{"line_number":1194,"context_line":"    New method added to new driver - add a method to impliment the new"},{"line_number":1195,"context_line":"                                     functionality here if possible. If that is"},{"line_number":1196,"context_line":"                                     not possible, then return NotImplemented,"},{"line_number":1197,"context_line":"                                     since we do not guarantee to support new"}],"source_content_type":"text/x-python","patch_set":25,"id":"7a740942_34f6f1d7","line":1194,"updated":"2015-12-06 19:28:43.000000000","message":"(typo) implement","commit_id":"a8cba7295511fe683154c2f5c8d80e2bb5b7cdf8"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"c55c0a81f3bf809fe0509a08f8d2b2b32dd567cb","unresolved":false,"context_lines":[{"line_number":1191,"context_line":"    Method signature (or meaning) changed - wrap the old method in a new"},{"line_number":1192,"context_line":"                                            signature here, and munge the input"},{"line_number":1193,"context_line":"                                            and output parameters accordingly."},{"line_number":1194,"context_line":"    New method added to new driver - add a method to impliment the new"},{"line_number":1195,"context_line":"                                     functionality here if possible. If that is"},{"line_number":1196,"context_line":"                                     not possible, then return NotImplemented,"},{"line_number":1197,"context_line":"                                     since we do not guarantee to support new"}],"source_content_type":"text/x-python","patch_set":25,"id":"7a740942_a87b448b","line":1194,"in_reply_to":"7a740942_34f6f1d7","updated":"2015-12-07 14:24:08.000000000","message":"Done","commit_id":"a8cba7295511fe683154c2f5c8d80e2bb5b7cdf8"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"b9baadac411fa20a005ec847d105fcaf8bd3c56c","unresolved":false,"context_lines":[{"line_number":1203,"context_line":"        as_of\u003dversionutils.deprecated.MITAKA,"},{"line_number":1204,"context_line":"        what\u003d\u0027keystone.assignment.AssignmentDriverV8\u0027,"},{"line_number":1205,"context_line":"        in_favor_of\u003d\u0027keystone.assignment.AssignmentDriverV9\u0027,"},{"line_number":1206,"context_line":"        remove_in\u003d+2)"},{"line_number":1207,"context_line":"    def __init__(self, wrapped_driver):"},{"line_number":1208,"context_line":"        self.driver \u003d wrapped_driver"},{"line_number":1209,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"7a740942_341d910f","line":1206,"updated":"2015-12-06 19:28:43.000000000","message":"Nice, so anyone following the old driver signature (with our legacy driver or with their own), will get the deprecation message","commit_id":"a8cba7295511fe683154c2f5c8d80e2bb5b7cdf8"}],"keystone/tests/unit/core.py":[{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"9bfa399e3d3fc093d7a282deb6aca79a68ebfacc","unresolved":false,"context_lines":[{"line_number":781,"context_line":"        self.config_fixture.config(group\u003d\u0027revoke\u0027, driver\u003d\u0027sql\u0027)"},{"line_number":782,"context_line":"        self.config_fixture.config(group\u003d\u0027token\u0027, driver\u003d\u0027sql\u0027)"},{"line_number":783,"context_line":"        self.config_fixture.config(group\u003d\u0027trust\u0027, driver\u003d\u0027sql\u0027)"},{"line_number":784,"context_line":"        self.SQL_driver_version_overrides \u003d {}"},{"line_number":785,"context_line":""},{"line_number":786,"context_line":"    def use_specific_SQL_driver_version(self, driver_path,"},{"line_number":787,"context_line":"                                        versionless_backend, version_suffix):"}],"source_content_type":"text/x-python","patch_set":17,"id":"ba8a016a_308f3d77","line":784,"updated":"2015-11-20 13:58:52.000000000","message":"(nit): maybe sql (lowercase) ?  We haven\u0027t been using the convention of uppercase on this so far, e.g SqlPolicyAssociationTable","commit_id":"57312ff1dc92eeed91df9c8d03db71fc5a6b44e5"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"09b52360f6dad99ee3070ba7dfcdf1a0db267868","unresolved":false,"context_lines":[{"line_number":781,"context_line":"        self.config_fixture.config(group\u003d\u0027revoke\u0027, driver\u003d\u0027sql\u0027)"},{"line_number":782,"context_line":"        self.config_fixture.config(group\u003d\u0027token\u0027, driver\u003d\u0027sql\u0027)"},{"line_number":783,"context_line":"        self.config_fixture.config(group\u003d\u0027trust\u0027, driver\u003d\u0027sql\u0027)"},{"line_number":784,"context_line":"        self.SQL_driver_version_overrides \u003d {}"},{"line_number":785,"context_line":""},{"line_number":786,"context_line":"    def use_specific_SQL_driver_version(self, driver_path,"},{"line_number":787,"context_line":"                                        versionless_backend, version_suffix):"}],"source_content_type":"text/x-python","patch_set":17,"id":"7a740942_1eef59b1","line":784,"in_reply_to":"ba8a016a_308f3d77","updated":"2015-12-06 11:00:05.000000000","message":"Done","commit_id":"57312ff1dc92eeed91df9c8d03db71fc5a6b44e5"}],"keystone/tests/unit/ksfixtures/database.py":[{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"9bfa399e3d3fc093d7a282deb6aca79a68ebfacc","unresolved":false,"context_lines":[{"line_number":107,"context_line":"            this_backend \u003d module_components[len(module_components) - 1]"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"            # At this point module_without_backends might be something like"},{"line_number":110,"context_line":"            # \u0027keystone.assignmnet\u0027, while this_backend might be something"},{"line_number":111,"context_line":"            # \u0027V8_backends\u0027."},{"line_number":112,"context_line":"            if module_without_backends in version_specifiers:"},{"line_number":113,"context_line":"                # OK, so there is a request for a specific version of this one."}],"source_content_type":"text/x-python","patch_set":17,"id":"ba8a016a_90f5c9cc","line":110,"updated":"2015-11-20 13:58:52.000000000","message":"keystone.assignment","commit_id":"57312ff1dc92eeed91df9c8d03db71fc5a6b44e5"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"09b52360f6dad99ee3070ba7dfcdf1a0db267868","unresolved":false,"context_lines":[{"line_number":107,"context_line":"            this_backend \u003d module_components[len(module_components) - 1]"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"            # At this point module_without_backends might be something like"},{"line_number":110,"context_line":"            # \u0027keystone.assignmnet\u0027, while this_backend might be something"},{"line_number":111,"context_line":"            # \u0027V8_backends\u0027."},{"line_number":112,"context_line":"            if module_without_backends in version_specifiers:"},{"line_number":113,"context_line":"                # OK, so there is a request for a specific version of this one."}],"source_content_type":"text/x-python","patch_set":17,"id":"7a740942_5ef5e180","line":110,"in_reply_to":"ba8a016a_90f5c9cc","updated":"2015-12-06 11:00:05.000000000","message":"Done","commit_id":"57312ff1dc92eeed91df9c8d03db71fc5a6b44e5"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"fe1f3d34a23b96152c75fe52e3ce6506b0a478e8","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"@run_once"},{"line_number":55,"context_line":"def _load_sqlalchemy_models(version_specifiers):"},{"line_number":56,"context_line":"    \"\"\"Find all modules containing SQLAlchemy models and import them."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    This creates more consistent, deterministic test runs because tables"}],"source_content_type":"text/x-python","patch_set":29,"id":"7a740942_475cc67c","line":55,"updated":"2015-12-08 16:12:29.000000000","message":"I\u0027m not clear how this works in the full unit test run since the old and the new will be imported into the same process. Does it work accidentally because of ordering?","commit_id":"9c9136d3a9fe0c74ba7314121af990c00bc05e00"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"1b37bd624036fd66f7f719dcf7003ce936cc69f2","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"@run_once"},{"line_number":55,"context_line":"def _load_sqlalchemy_models(version_specifiers):"},{"line_number":56,"context_line":"    \"\"\"Find all modules containing SQLAlchemy models and import them."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    This creates more consistent, deterministic test runs because tables"}],"source_content_type":"text/x-python","patch_set":29,"id":"7a740942_ca4f5d32","line":55,"in_reply_to":"7a740942_475cc67c","updated":"2015-12-08 16:18:38.000000000","message":"++ on question.","commit_id":"9c9136d3a9fe0c74ba7314121af990c00bc05e00"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"608794c29ec6bbc4020adc5f5fb865c631ecb5d0","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"@run_once"},{"line_number":55,"context_line":"def _load_sqlalchemy_models(version_specifiers):"},{"line_number":56,"context_line":"    \"\"\"Find all modules containing SQLAlchemy models and import them."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    This creates more consistent, deterministic test runs because tables"}],"source_content_type":"text/x-python","patch_set":29,"id":"7a740942_3e14234b","line":55,"in_reply_to":"7a740942_ca4f5d32","updated":"2015-12-08 17:33:23.000000000","message":"So the idea is that the changes to the code below will ensure that we do NOT load a competing driver....i.e. if you have asked for V8 it will only load V8 and not any other version (include the latest one)","commit_id":"9c9136d3a9fe0c74ba7314121af990c00bc05e00"}],"keystone/tests/unit/test_backend_ldap.py":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"9cf0064d0366719b10af1541576ec0b16bea7c36","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"class LDAPBackendMixin(object):"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def _assert_backends(self, **kwargs):"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        def _get_backend_cls(testcase, subsystem):"},{"line_number":60,"context_line":"            observed_backend \u003d getattr(testcase, subsystem + \u0027_api\u0027).driver"}],"source_content_type":"text/x-python","patch_set":17,"id":"ba8a016a_29e110ff","line":57,"updated":"2015-11-20 17:29:36.000000000","message":"why move this? I have another patch that actually moves this to a more generic location so it can be used by other driver tests.","commit_id":"57312ff1dc92eeed91df9c8d03db71fc5a6b44e5"}],"releasenotes/notes/Assignment_V9_driver-c22be069f7baccb0.yaml":[{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"3a046c054512dea8ee393b088c483deff4b98de6","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    New Assignment driver (V9)"},{"line_number":4,"context_line":"upgrade:"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"ba8a016a_dbcf1827","line":1,"updated":"2015-11-19 22:43:21.000000000","message":"This oddly named file was auto generated by reno I presumed?","commit_id":"d0bf83c8dbad4fc4f041af20339de0d13757437b"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"f3885dae473fb282caebf1322938837de4dff4da","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    New Assignment driver (V9)"},{"line_number":4,"context_line":"upgrade:"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"ba8a016a_1e982e1b","line":1,"in_reply_to":"ba8a016a_dbcf1827","updated":"2015-11-19 22:49:29.000000000","message":"yep!","commit_id":"d0bf83c8dbad4fc4f041af20339de0d13757437b"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"9bfa399e3d3fc093d7a282deb6aca79a68ebfacc","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    New Assignment driver (V9)"},{"line_number":4,"context_line":"upgrade:"},{"line_number":5,"context_line":"  - The V8 Assignment driver interface is deprecated, but still supported in"},{"line_number":6,"context_line":"    Mitaka, so any custom drivers based on the V8 interface should still work."}],"source_content_type":"text/x-yaml","patch_set":17,"id":"ba8a016a_8b67dee9","line":3,"updated":"2015-11-20 13:58:52.000000000","message":"I see you are using V9 and V8 everywhere, and I wondered if it\u0027s a pattern in keystone. I\u0027ve been always seeing V as lowercase when talking about versions, like v9 and v8.\n\nThis is just a comment/curiosity :)","commit_id":"57312ff1dc92eeed91df9c8d03db71fc5a6b44e5"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"9cf0064d0366719b10af1541576ec0b16bea7c36","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    New Assignment driver (V9)"},{"line_number":4,"context_line":"upgrade:"},{"line_number":5,"context_line":"  - The V8 Assignment driver interface is deprecated, but still supported in"},{"line_number":6,"context_line":"    Mitaka, so any custom drivers based on the V8 interface should still work."}],"source_content_type":"text/x-yaml","patch_set":17,"id":"ba8a016a_69087892","line":3,"in_reply_to":"ba8a016a_8b67dee9","updated":"2015-11-20 17:29:36.000000000","message":"v9 or V9 doesn\u0027t matter much to me as long as we are consistent. The V9 more closely matches the class name.","commit_id":"57312ff1dc92eeed91df9c8d03db71fc5a6b44e5"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"9bfa399e3d3fc093d7a282deb6aca79a68ebfacc","unresolved":false,"context_lines":[{"line_number":3,"context_line":"    New Assignment driver (V9)"},{"line_number":4,"context_line":"upgrade:"},{"line_number":5,"context_line":"  - The V8 Assignment driver interface is deprecated, but still supported in"},{"line_number":6,"context_line":"    Mitaka, so any custom drivers based on the V8 interface should still work."},{"line_number":7,"context_line":"other:"},{"line_number":8,"context_line":"  - Support for the V8 Assignment driver interface is planned to be removed in"},{"line_number":9,"context_line":"    the \u0027O\u0027 release of OpenStack."}],"source_content_type":"text/x-yaml","patch_set":17,"id":"ba8a016a_10f23970","line":6,"updated":"2015-11-20 13:58:52.000000000","message":"but still supported in Mitaka and N ?\n\nor perhaps but still supported for 2 releases, starting in Mitaka?","commit_id":"57312ff1dc92eeed91df9c8d03db71fc5a6b44e5"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"2ee31d3589f5cba46ee45ea49cb74dc8f1cdaae2","unresolved":false,"context_lines":[{"line_number":3,"context_line":"    New Assignment driver (V9)"},{"line_number":4,"context_line":"upgrade:"},{"line_number":5,"context_line":"  - The V8 Assignment driver interface is deprecated, but still supported in"},{"line_number":6,"context_line":"    Mitaka, so any custom drivers based on the V8 interface should still work."},{"line_number":7,"context_line":"other:"},{"line_number":8,"context_line":"  - Support for the V8 Assignment driver interface is planned to be removed in"},{"line_number":9,"context_line":"    the \u0027O\u0027 release of OpenStack."}],"source_content_type":"text/x-yaml","patch_set":17,"id":"ba8a016a_6b739a16","line":6,"in_reply_to":"ba8a016a_10f23970","updated":"2015-11-20 14:08:39.000000000","message":"(I am making a suggestion to improve the text :))","commit_id":"57312ff1dc92eeed91df9c8d03db71fc5a6b44e5"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"09b52360f6dad99ee3070ba7dfcdf1a0db267868","unresolved":false,"context_lines":[{"line_number":3,"context_line":"    New Assignment driver (V9)"},{"line_number":4,"context_line":"upgrade:"},{"line_number":5,"context_line":"  - The V8 Assignment driver interface is deprecated, but still supported in"},{"line_number":6,"context_line":"    Mitaka, so any custom drivers based on the V8 interface should still work."},{"line_number":7,"context_line":"other:"},{"line_number":8,"context_line":"  - Support for the V8 Assignment driver interface is planned to be removed in"},{"line_number":9,"context_line":"    the \u0027O\u0027 release of OpenStack."}],"source_content_type":"text/x-yaml","patch_set":17,"id":"7a740942_de2f91f4","line":6,"in_reply_to":"ba8a016a_10f23970","updated":"2015-12-06 11:00:05.000000000","message":"I changed it to simply say \"this release\".  The statement on future support is below in the \"other\" section.","commit_id":"57312ff1dc92eeed91df9c8d03db71fc5a6b44e5"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"9cf0064d0366719b10af1541576ec0b16bea7c36","unresolved":false,"context_lines":[{"line_number":3,"context_line":"    New Assignment driver (V9)"},{"line_number":4,"context_line":"upgrade:"},{"line_number":5,"context_line":"  - The V8 Assignment driver interface is deprecated, but still supported in"},{"line_number":6,"context_line":"    Mitaka, so any custom drivers based on the V8 interface should still work."},{"line_number":7,"context_line":"other:"},{"line_number":8,"context_line":"  - Support for the V8 Assignment driver interface is planned to be removed in"},{"line_number":9,"context_line":"    the \u0027O\u0027 release of OpenStack."}],"source_content_type":"text/x-yaml","patch_set":17,"id":"ba8a016a_498ed428","line":6,"in_reply_to":"ba8a016a_10f23970","updated":"2015-11-20 17:29:36.000000000","message":"When we started down the versioned drivers path we declared we would support only the previous version in a release.","commit_id":"57312ff1dc92eeed91df9c8d03db71fc5a6b44e5"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"09b52360f6dad99ee3070ba7dfcdf1a0db267868","unresolved":false,"context_lines":[{"line_number":3,"context_line":"    New Assignment driver (V9)"},{"line_number":4,"context_line":"upgrade:"},{"line_number":5,"context_line":"  - The V8 Assignment driver interface is deprecated, but still supported in"},{"line_number":6,"context_line":"    Mitaka, so any custom drivers based on the V8 interface should still work."},{"line_number":7,"context_line":"other:"},{"line_number":8,"context_line":"  - Support for the V8 Assignment driver interface is planned to be removed in"},{"line_number":9,"context_line":"    the \u0027O\u0027 release of OpenStack."}],"source_content_type":"text/x-yaml","patch_set":17,"id":"7a740942_7e369d53","line":6,"in_reply_to":"ba8a016a_498ed428","updated":"2015-12-06 11:00:05.000000000","message":"Does doing one release satisfy the standard project requirements...which though was a standard of +2....","commit_id":"57312ff1dc92eeed91df9c8d03db71fc5a6b44e5"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"fe1f3d34a23b96152c75fe52e3ce6506b0a478e8","unresolved":false,"context_lines":[{"line_number":3,"context_line":"    New Assignment driver (V9)"},{"line_number":4,"context_line":"upgrade:"},{"line_number":5,"context_line":"  - The V8 Assignment driver interface is deprecated, but still supported in"},{"line_number":6,"context_line":"    this release, so any custom drivers based on the V8 interface should still"},{"line_number":7,"context_line":"    work."},{"line_number":8,"context_line":"other:"},{"line_number":9,"context_line":"  - Support for the V8 Assignment driver interface is planned to be removed in"}],"source_content_type":"text/x-yaml","patch_set":29,"id":"7a740942_07d0fef4","line":6,"updated":"2015-12-08 16:12:29.000000000","message":"(ni) s/should/will/ ?","commit_id":"9c9136d3a9fe0c74ba7314121af990c00bc05e00"}],"setup.cfg":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"fe1f3d34a23b96152c75fe52e3ce6506b0a478e8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"[metadata]"},{"line_number":2,"context_line":"name \u003d keystone"},{"line_number":3,"context_line":"version \u003d 9.0.0"},{"line_number":4,"context_line":"summary \u003d OpenStack Identity"},{"line_number":5,"context_line":"description-file \u003d"},{"line_number":6,"context_line":"    README.rst"}],"source_content_type":"text/x-ttcn-cfg","patch_set":29,"id":"7a740942_c7be76ad","line":3,"updated":"2015-12-08 16:12:29.000000000","message":"Was this added back on accident?","commit_id":"9c9136d3a9fe0c74ba7314121af990c00bc05e00"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"608794c29ec6bbc4020adc5f5fb865c631ecb5d0","unresolved":false,"context_lines":[{"line_number":1,"context_line":"[metadata]"},{"line_number":2,"context_line":"name \u003d keystone"},{"line_number":3,"context_line":"version \u003d 9.0.0"},{"line_number":4,"context_line":"summary \u003d OpenStack Identity"},{"line_number":5,"context_line":"description-file \u003d"},{"line_number":6,"context_line":"    README.rst"}],"source_content_type":"text/x-ttcn-cfg","patch_set":29,"id":"7a740942_f911d552","line":3,"in_reply_to":"7a740942_c7be76ad","updated":"2015-12-08 17:33:23.000000000","message":"blimey...no idea where that came from!","commit_id":"9c9136d3a9fe0c74ba7314121af990c00bc05e00"}],"tox.ini":[{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"3a046c054512dea8ee393b088c483deff4b98de6","unresolved":false,"context_lines":[{"line_number":70,"context_line":"      keystone/tests/unit/token/test_token_model.py \\"},{"line_number":71,"context_line":"      keystone/tests/unit/token/test_uuid_provider.py"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"[testenv:legacy_drivers]"},{"line_number":74,"context_line":"deps \u003d -r{toxinidir}/test-requirements.txt"},{"line_number":75,"context_line":"       nose"},{"line_number":76,"context_line":"       .[ldap,memcache,mongodb]"}],"source_content_type":"text/x-properties","patch_set":16,"id":"ba8a016a_fb5bfc83","line":73,"updated":"2015-11-19 22:43:21.000000000","message":"why do we need a new env for them? These tests still being picked up by other envs right?","commit_id":"d0bf83c8dbad4fc4f041af20339de0d13757437b"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"f3885dae473fb282caebf1322938837de4dff4da","unresolved":false,"context_lines":[{"line_number":70,"context_line":"      keystone/tests/unit/token/test_token_model.py \\"},{"line_number":71,"context_line":"      keystone/tests/unit/token/test_uuid_provider.py"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"[testenv:legacy_drivers]"},{"line_number":74,"context_line":"deps \u003d -r{toxinidir}/test-requirements.txt"},{"line_number":75,"context_line":"       nose"},{"line_number":76,"context_line":"       .[ldap,memcache,mongodb]"}],"source_content_type":"text/x-properties","patch_set":16,"id":"ba8a016a_7ea4da49","line":73,"in_reply_to":"ba8a016a_fb5bfc83","updated":"2015-11-19 22:49:29.000000000","message":"\u0027cause otherwise there is a problem with our SQL test since we load all the models at the start..and we can\u0027t cope with model changes have way through the test.  These test below DON\u0027T run in the other ends, since they are not called test_xxx","commit_id":"d0bf83c8dbad4fc4f041af20339de0d13757437b"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"9cf0064d0366719b10af1541576ec0b16bea7c36","unresolved":false,"context_lines":[{"line_number":70,"context_line":"      keystone/tests/unit/token/test_token_model.py \\"},{"line_number":71,"context_line":"      keystone/tests/unit/token/test_uuid_provider.py"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"[testenv:legacy_drivers]"},{"line_number":74,"context_line":"deps \u003d -r{toxinidir}/test-requirements.txt"},{"line_number":75,"context_line":"       nose"},{"line_number":76,"context_line":"       .[ldap,memcache,mongodb]"}],"source_content_type":"text/x-properties","patch_set":17,"id":"ba8a016a_290d9037","line":73,"updated":"2015-11-20 17:29:36.000000000","message":"What do you need this for? Can\u0027t the same be done already with the py27 target? e.g. tox -epy27 -- keystone.tests.unit.backend.legacy_drivers","commit_id":"57312ff1dc92eeed91df9c8d03db71fc5a6b44e5"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"fe1f3d34a23b96152c75fe52e3ce6506b0a478e8","unresolved":false,"context_lines":[{"line_number":70,"context_line":"      keystone/tests/unit/token/test_token_model.py \\"},{"line_number":71,"context_line":"      keystone/tests/unit/token/test_uuid_provider.py"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"[testenv:legacy_drivers]"},{"line_number":74,"context_line":"deps \u003d -r{toxinidir}/test-requirements.txt"},{"line_number":75,"context_line":"       nose"},{"line_number":76,"context_line":"       .[ldap,memcache,mongodb]"}],"source_content_type":"text/x-properties","patch_set":29,"id":"7a740942_47b286e6","line":73,"updated":"2015-12-08 16:12:29.000000000","message":"Is there any reason we are singling out the legacy tests?","commit_id":"9c9136d3a9fe0c74ba7314121af990c00bc05e00"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"608794c29ec6bbc4020adc5f5fb865c631ecb5d0","unresolved":false,"context_lines":[{"line_number":70,"context_line":"      keystone/tests/unit/token/test_token_model.py \\"},{"line_number":71,"context_line":"      keystone/tests/unit/token/test_uuid_provider.py"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"[testenv:legacy_drivers]"},{"line_number":74,"context_line":"deps \u003d -r{toxinidir}/test-requirements.txt"},{"line_number":75,"context_line":"       nose"},{"line_number":76,"context_line":"       .[ldap,memcache,mongodb]"}],"source_content_type":"text/x-properties","patch_set":29,"id":"7a740942_b92eed89","line":73,"in_reply_to":"7a740942_47b286e6","updated":"2015-12-08 17:33:23.000000000","message":"so that they don\u0027t run combined with the standard tests and cause multiple competing models to be loaded","commit_id":"9c9136d3a9fe0c74ba7314121af990c00bc05e00"}]}
