)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"fdcced0e39809247085b12d8c59f717608b846e2","unresolved":false,"context_lines":[{"line_number":14,"context_line":"dependencies."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"- Moved the filter_user method to backends/common.py.  This method is"},{"line_number":17,"context_line":"only used by the backends."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"- Moved the interfaces to modules inside the backends.  Interfaces"},{"line_number":20,"context_line":"should be closer to the code that implements them and again, wanted to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"ba0121b8_e17483d0","line":17,"updated":"2016-03-29 15:54:55.000000000","message":"I wonder if each of these items could be there own patch set? It would result in smaller changes that are a little more reviewable.","commit_id":"005314181c702bee386d25b315d72b7d1099fe60"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"e2c991e4c66825a2dd406caa28f792a9e5dd2259","unresolved":false,"context_lines":[{"line_number":14,"context_line":"dependencies."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"- Moved the filter_user method to backends/common.py.  This method is"},{"line_number":17,"context_line":"only used by the backends."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"- Moved the interfaces to modules inside the backends.  Interfaces"},{"line_number":20,"context_line":"should be closer to the code that implements them and again, wanted to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"ba0121b8_fa08a1db","line":17,"in_reply_to":"ba0121b8_e17483d0","updated":"2016-03-29 18:43:58.000000000","message":"Good suggestion Lance.  Let me make this into smaller chunks.","commit_id":"005314181c702bee386d25b315d72b7d1099fe60"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3e61bf60fd4ba3323ef5765cd14728db168a675b","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Ronald De Rose \u003cronald.de.rose@intel.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-04-04 19:30:21 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Remove backend interface and common code out of identity.core"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This removes dependencies where backend code references code in the"},{"line_number":10,"context_line":"core.  The reasoning being that the core should know about the backend"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"9a061dce_dd78122e","line":7,"range":{"start_line":7,"start_character":41,"end_line":7,"end_character":47},"updated":"2016-04-05 21:27:31.000000000","message":"from","commit_id":"5107da7610ef8afbc5802f79e8d1a48c8c6deb77"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3e61bf60fd4ba3323ef5765cd14728db168a675b","unresolved":false,"context_lines":[{"line_number":15,"context_line":"- Moved the filter_user method to backends/base.py.  This method is"},{"line_number":16,"context_line":"only used by the backends."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"- Moved the interfaces (base) to modules inside the backends. Interfaces"},{"line_number":19,"context_line":"should be closer to the code that implements them and again, wanted to"},{"line_number":20,"context_line":"remove the dependency where the backends were referencing code in the"},{"line_number":21,"context_line":"core."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"9a061dce_9d9dfa5b","line":18,"range":{"start_line":18,"start_character":61,"end_line":18,"end_character":62},"updated":"2016-04-05 21:27:31.000000000","message":"only 1 space after a .?","commit_id":"5107da7610ef8afbc5802f79e8d1a48c8c6deb77"}],"keystone/identity/backends/base.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"3fb00d1cf3f69cd0d8cbb3aeffc3fba09022ca3e","unresolved":false,"context_lines":[{"line_number":23,"context_line":"CONF \u003d cfg.CONF"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"def filter_user(user_ref):"},{"line_number":27,"context_line":"    \"\"\"Filter out private items in a user dict."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    \u0027password\u0027, \u0027tenants\u0027 and \u0027groups\u0027 are never returned."}],"source_content_type":"text/x-python","patch_set":9,"id":"ba0121b8_b578c92c","line":26,"updated":"2016-03-30 13:34:01.000000000","message":"++ nice, this is a better spot for this.","commit_id":"3a1ded7099e585e4c8c6c2a20f119db2d3dba703"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"a32b003a85c11a64bc50345fd5873b2f914d7a3f","unresolved":false,"context_lines":[{"line_number":23,"context_line":"CONF \u003d cfg.CONF"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"def filter_user(user_ref):"},{"line_number":27,"context_line":"    \"\"\"Filter out private items in a user dict."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    \u0027password\u0027, \u0027tenants\u0027 and \u0027groups\u0027 are never returned."}],"source_content_type":"text/x-python","patch_set":9,"id":"ba0121b8_1d16e5f0","line":26,"in_reply_to":"ba0121b8_b578c92c","updated":"2016-03-30 20:51:47.000000000","message":"Thx :)","commit_id":"3a1ded7099e585e4c8c6c2a20f119db2d3dba703"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"2568cc58da00708423eb20f2f615c2291e3e6f27","unresolved":false,"context_lines":[{"line_number":274,"context_line":"        \"\"\""},{"line_number":275,"context_line":"        raise exception.NotImplemented()  # pragma: no cover"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    # end of identity"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba0121b8_3551590f","line":277,"updated":"2016-03-30 13:31:51.000000000","message":"nit: These last two lines could probably be removed. Was this copied over from when the interface was in a more generic module?","commit_id":"3a1ded7099e585e4c8c6c2a20f119db2d3dba703"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"a32b003a85c11a64bc50345fd5873b2f914d7a3f","unresolved":false,"context_lines":[{"line_number":274,"context_line":"        \"\"\""},{"line_number":275,"context_line":"        raise exception.NotImplemented()  # pragma: no cover"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    # end of identity"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba0121b8_3d192923","line":277,"in_reply_to":"ba0121b8_3551590f","updated":"2016-03-30 20:51:47.000000000","message":"Done","commit_id":"3a1ded7099e585e4c8c6c2a20f119db2d3dba703"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3e61bf60fd4ba3323ef5765cd14728db168a675b","unresolved":false,"context_lines":[{"line_number":26,"context_line":"def filter_user(user_ref):"},{"line_number":27,"context_line":"    \"\"\"Filter out private items in a user dict."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    \u0027password\u0027, \u0027tenants\u0027 and \u0027groups\u0027 are never returned."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    :returns: user_ref"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"9a061dce_dd3bf236","line":29,"updated":"2016-04-05 21:27:31.000000000","message":"(unrelated) what about domains?","commit_id":"5107da7610ef8afbc5802f79e8d1a48c8c6deb77"}],"keystone/identity/core.py":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"3d4d834a21e2c511bbcb82b66d500cd55fe28af4","unresolved":false,"context_lines":[{"line_number":1229,"context_line":"                federated_dict)"},{"line_number":1230,"context_line":"        return user_dict"},{"line_number":1231,"context_line":""},{"line_number":1232,"context_line":"Driver \u003d manager.create_legacy_driver(identity_interface.IdentityDriverV8)"},{"line_number":1233,"context_line":""},{"line_number":1234,"context_line":""},{"line_number":1235,"context_line":"@dependency.provider(\u0027id_mapping_api\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba0121b8_0044bc47","line":1232,"updated":"2016-03-30 20:55:57.000000000","message":"Suggest making this a wrapper that issues a deprecation warning instead of just an alias (long term)","commit_id":"d8061cdb50eab3bb3cb2958608b6916694bc9a6c"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"709efd81de298e0d5018532b92270b2d50b52169","unresolved":false,"context_lines":[{"line_number":1229,"context_line":"                federated_dict)"},{"line_number":1230,"context_line":"        return user_dict"},{"line_number":1231,"context_line":""},{"line_number":1232,"context_line":"Driver \u003d manager.create_legacy_driver(identity_interface.IdentityDriverV8)"},{"line_number":1233,"context_line":""},{"line_number":1234,"context_line":""},{"line_number":1235,"context_line":"@dependency.provider(\u0027id_mapping_api\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba0121b8_205e2012","line":1232,"in_reply_to":"ba0121b8_0044bc47","updated":"2016-03-30 20:56:39.000000000","message":"deprecation of 1 cycle should be good.","commit_id":"d8061cdb50eab3bb3cb2958608b6916694bc9a6c"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"81a946b5c523559d30577c711101cc9946b777d6","unresolved":false,"context_lines":[{"line_number":1229,"context_line":"                federated_dict)"},{"line_number":1230,"context_line":"        return user_dict"},{"line_number":1231,"context_line":""},{"line_number":1232,"context_line":"Driver \u003d manager.create_legacy_driver(identity_interface.IdentityDriverV8)"},{"line_number":1233,"context_line":""},{"line_number":1234,"context_line":""},{"line_number":1235,"context_line":"@dependency.provider(\u0027id_mapping_api\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba0121b8_41531d39","line":1232,"in_reply_to":"ba0121b8_016c8533","updated":"2016-03-31 20:42:19.000000000","message":"That being said, I do see the benefit of moving this line (\"Driver \u003d ...\") to the base class.  However, I think we should create a separate patch for this.  The primary concern for the current patch is to avoid driver -\u003e manager calls and I want to keep it as simple as possible for reviewers.  Let me know if you strongly disagree though.","commit_id":"d8061cdb50eab3bb3cb2958608b6916694bc9a6c"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"680b89d881730e71d74cea75782678069477db4a","unresolved":false,"context_lines":[{"line_number":1229,"context_line":"                federated_dict)"},{"line_number":1230,"context_line":"        return user_dict"},{"line_number":1231,"context_line":""},{"line_number":1232,"context_line":"Driver \u003d manager.create_legacy_driver(identity_interface.IdentityDriverV8)"},{"line_number":1233,"context_line":""},{"line_number":1234,"context_line":""},{"line_number":1235,"context_line":"@dependency.provider(\u0027id_mapping_api\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba0121b8_016c8533","line":1232,"in_reply_to":"ba0121b8_205e2012","updated":"2016-03-31 20:36:01.000000000","message":"We discussed this in IRC, this patch does not move this line (\"Driver \u003d ...\") to the backend.  So if someone is sub-classing off of Driver, identity.core.Driver will still work; thus there wouldn\u0027t be a need to have a deprecation warning.","commit_id":"d8061cdb50eab3bb3cb2958608b6916694bc9a6c"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"3d4d834a21e2c511bbcb82b66d500cd55fe28af4","unresolved":false,"context_lines":[{"line_number":1241,"context_line":"    def __init__(self):"},{"line_number":1242,"context_line":"        super(MappingManager, self).__init__(CONF.identity_mapping.driver)"},{"line_number":1243,"context_line":""},{"line_number":1244,"context_line":"MappingDriver \u003d manager.create_legacy_driver(mapping_interface.MappingDriverV8)"},{"line_number":1245,"context_line":""},{"line_number":1246,"context_line":""},{"line_number":1247,"context_line":"@dependency.provider(\u0027shadow_users_api\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba0121b8_2047404c","line":1244,"updated":"2016-03-30 20:55:57.000000000","message":"Same as above","commit_id":"d8061cdb50eab3bb3cb2958608b6916694bc9a6c"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"131422fc326377cd4c19034eec15877f0549a2e7","unresolved":false,"context_lines":[{"line_number":1241,"context_line":"    def __init__(self):"},{"line_number":1242,"context_line":"        super(MappingManager, self).__init__(CONF.identity_mapping.driver)"},{"line_number":1243,"context_line":""},{"line_number":1244,"context_line":"MappingDriver \u003d manager.create_legacy_driver(mapping_interface.MappingDriverV8)"},{"line_number":1245,"context_line":""},{"line_number":1246,"context_line":""},{"line_number":1247,"context_line":"@dependency.provider(\u0027shadow_users_api\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba0121b8_fc113653","line":1244,"in_reply_to":"ba0121b8_2047404c","updated":"2016-03-31 20:42:55.000000000","message":"See my comment above","commit_id":"d8061cdb50eab3bb3cb2958608b6916694bc9a6c"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"329b9e41f32aaff02506b87ae82855c8ed4701f2","unresolved":false,"context_lines":[{"line_number":1229,"context_line":"                federated_dict)"},{"line_number":1230,"context_line":"        return user_dict"},{"line_number":1231,"context_line":""},{"line_number":1232,"context_line":"Driver \u003d manager.create_legacy_driver(identity_interface.IdentityDriverV8)"},{"line_number":1233,"context_line":""},{"line_number":1234,"context_line":""},{"line_number":1235,"context_line":"@dependency.provider(\u0027id_mapping_api\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba0121b8_32aba0d8","line":1232,"updated":"2016-04-01 21:03:16.000000000","message":"Anybody who\u0027s developing their own driver using IdentityDriverV8 is going to fail with this move. We need to leave the symbol here and have it print a deprecated message when somebody uses it.\n\nThis applies to the other symbols removed from here.","commit_id":"d87302e6deba8292f36384d31eb743762c9d9a18"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"5a6e988a384a93aa34478a66f06558a8478bbc18","unresolved":false,"context_lines":[{"line_number":1229,"context_line":"                federated_dict)"},{"line_number":1230,"context_line":"        return user_dict"},{"line_number":1231,"context_line":""},{"line_number":1232,"context_line":"Driver \u003d manager.create_legacy_driver(identity_interface.IdentityDriverV8)"},{"line_number":1233,"context_line":""},{"line_number":1234,"context_line":""},{"line_number":1235,"context_line":"@dependency.provider(\u0027id_mapping_api\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba0121b8_9b344ffc","line":1232,"updated":"2016-04-01 19:18:40.000000000","message":"Based on the previous discussion we *could* add a note here saying that this should be moved to the backend at some point.","commit_id":"d87302e6deba8292f36384d31eb743762c9d9a18"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"a6d306d74244d6572c3c9abe5a3ef2f849622c43","unresolved":false,"context_lines":[{"line_number":1229,"context_line":"                federated_dict)"},{"line_number":1230,"context_line":"        return user_dict"},{"line_number":1231,"context_line":""},{"line_number":1232,"context_line":"Driver \u003d manager.create_legacy_driver(identity_interface.IdentityDriverV8)"},{"line_number":1233,"context_line":""},{"line_number":1234,"context_line":""},{"line_number":1235,"context_line":"@dependency.provider(\u0027id_mapping_api\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba0121b8_4411245d","line":1232,"in_reply_to":"ba0121b8_32aba0d8","updated":"2016-04-02 20:56:10.000000000","message":"@Brant we\u0027re not moving this line:\nDriver \u003d manager.create_legacy_driver(identity_interface.IdentityDriverV8)\n\nOnly moving the abstract base class at this point.","commit_id":"d87302e6deba8292f36384d31eb743762c9d9a18"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"fa6c2feb257f9e12aecb8bd0abd869a5b76f37b8","unresolved":false,"context_lines":[{"line_number":1229,"context_line":"                federated_dict)"},{"line_number":1230,"context_line":"        return user_dict"},{"line_number":1231,"context_line":""},{"line_number":1232,"context_line":"Driver \u003d manager.create_legacy_driver(identity_interface.IdentityDriverV8)"},{"line_number":1233,"context_line":""},{"line_number":1234,"context_line":""},{"line_number":1235,"context_line":"@dependency.provider(\u0027id_mapping_api\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a061dce_72e8677d","line":1232,"in_reply_to":"ba0121b8_4411245d","updated":"2016-04-04 15:05:35.000000000","message":"It\u0027s the abstract base class that developers of custom drivers are using, just like our drivers are using it.\n\nSo if somebody was doing\n\n from keystone import identity\n\n class MyDriver(identity.IdentityDriverV8):\n\nor\n\n from keystone.identity import core\n\n class MyDriver(core.IdentityDriverV8):\n\nthat needs to continue to work, since that\u0027s part of the public interface of keystone.","commit_id":"d87302e6deba8292f36384d31eb743762c9d9a18"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"5a6e988a384a93aa34478a66f06558a8478bbc18","unresolved":false,"context_lines":[{"line_number":1241,"context_line":"    def __init__(self):"},{"line_number":1242,"context_line":"        super(MappingManager, self).__init__(CONF.identity_mapping.driver)"},{"line_number":1243,"context_line":""},{"line_number":1244,"context_line":"MappingDriver \u003d manager.create_legacy_driver(mapping_interface.MappingDriverV8)"},{"line_number":1245,"context_line":""},{"line_number":1246,"context_line":""},{"line_number":1247,"context_line":"@dependency.provider(\u0027shadow_users_api\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba0121b8_db3ec7d9","line":1244,"updated":"2016-04-01 19:18:40.000000000","message":"Would this also apply to the above comment?","commit_id":"d87302e6deba8292f36384d31eb743762c9d9a18"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e31b8520a81f96691696f0ecdc71548153566879","unresolved":false,"context_lines":[{"line_number":1238,"context_line":"    in_favor_of\u003d\u0027keystone.identity.backends.base.IdentityDriverV8\u0027,"},{"line_number":1239,"context_line":"    remove_in\u003d+1)"},{"line_number":1240,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":1241,"context_line":"class IdentityDriverV8(object):"},{"line_number":1242,"context_line":"    \"\"\"Interface description for an Identity driver.\"\"\""},{"line_number":1243,"context_line":""},{"line_number":1244,"context_line":"    def _get_conf(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a061dce_1cae5585","line":1241,"updated":"2016-04-04 18:10:02.000000000","message":"this should be an empty class that\u0027s a subclass of keystone.identity.backends.base.IdentityDriverV8","commit_id":"91f5027d097065c250f17203605dcb90bb72bcda"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"993c7301b81bc28ce4ee5450a265258e3878142c","unresolved":false,"context_lines":[{"line_number":1238,"context_line":"    in_favor_of\u003d\u0027keystone.identity.backends.base.IdentityDriverV8\u0027,"},{"line_number":1239,"context_line":"    remove_in\u003d+1)"},{"line_number":1240,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":1241,"context_line":"class IdentityDriverV8(object):"},{"line_number":1242,"context_line":"    \"\"\"Interface description for an Identity driver.\"\"\""},{"line_number":1243,"context_line":""},{"line_number":1244,"context_line":"    def _get_conf(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a061dce_483c8793","line":1241,"in_reply_to":"9a061dce_1cae5585","updated":"2016-04-04 19:32:34.000000000","message":"Done","commit_id":"91f5027d097065c250f17203605dcb90bb72bcda"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"a701916ff4f7fe06238d76de77dd47e74052689e","unresolved":false,"context_lines":[{"line_number":1238,"context_line":"    in_favor_of\u003d\u0027keystone.identity.backends.base.IdentityDriverV8\u0027,"},{"line_number":1239,"context_line":"    remove_in\u003d+1)"},{"line_number":1240,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":1241,"context_line":"class IdentityDriverV8(object):"},{"line_number":1242,"context_line":"    \"\"\"Interface description for an Identity driver.\"\"\""},{"line_number":1243,"context_line":""},{"line_number":1244,"context_line":"    def _get_conf(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a061dce_e8c47b93","line":1241,"in_reply_to":"9a061dce_1cae5585","updated":"2016-04-04 19:32:23.000000000","message":"good suggestion.  thx","commit_id":"91f5027d097065c250f17203605dcb90bb72bcda"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3e61bf60fd4ba3323ef5765cd14728db168a675b","unresolved":false,"context_lines":[{"line_number":32,"context_line":"from keystone.common import manager"},{"line_number":33,"context_line":"from keystone import exception"},{"line_number":34,"context_line":"from keystone.i18n import _, _LW"},{"line_number":35,"context_line":"from keystone.identity.backends import base as identity_interface"},{"line_number":36,"context_line":"from keystone.identity.mapping_backends import base as mapping_interface"},{"line_number":37,"context_line":"from keystone.identity.mapping_backends import mapping"},{"line_number":38,"context_line":"from keystone.identity.shadow_backends import base as shadow_interface"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a061dce_fd14f644","line":35,"updated":"2016-04-05 21:27:31.000000000","message":"why isn\u0027t \"base\" called \"interface\" if that\u0027s a better name for it?","commit_id":"5107da7610ef8afbc5802f79e8d1a48c8c6deb77"}],"keystone/identity/shadow_backends/sql.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"2568cc58da00708423eb20f2f615c2291e3e6f27","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from keystone.common import sql"},{"line_number":16,"context_line":"from keystone import exception"},{"line_number":17,"context_line":"from keystone.identity.backends import base as common"},{"line_number":18,"context_line":"from keystone.identity.backends import sql as model"},{"line_number":19,"context_line":"from keystone.identity.shadow_backends import base as shadow_interface"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"ba0121b8_1557f5ce","line":17,"updated":"2016-03-30 13:31:51.000000000","message":"Any particular reason to re-namespace this to common?","commit_id":"3a1ded7099e585e4c8c6c2a20f119db2d3dba703"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"a32b003a85c11a64bc50345fd5873b2f914d7a3f","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from keystone.common import sql"},{"line_number":16,"context_line":"from keystone import exception"},{"line_number":17,"context_line":"from keystone.identity.backends import base as common"},{"line_number":18,"context_line":"from keystone.identity.backends import sql as model"},{"line_number":19,"context_line":"from keystone.identity.shadow_backends import base as shadow_interface"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"ba0121b8_5d805dc0","line":17,"in_reply_to":"ba0121b8_1557f5ce","updated":"2016-03-30 20:51:47.000000000","message":"Just being lazy, I was importing a common module in a previous patch.  I\u0027ve updated this and given a better name.","commit_id":"3a1ded7099e585e4c8c6c2a20f119db2d3dba703"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"329b9e41f32aaff02506b87ae82855c8ed4701f2","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from keystone.common import sql"},{"line_number":16,"context_line":"from keystone import exception"},{"line_number":17,"context_line":"from keystone.identity.backends import base as identity_base"},{"line_number":18,"context_line":"from keystone.identity.backends import sql as model"},{"line_number":19,"context_line":"from keystone.identity.shadow_backends import base"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"ba0121b8_b23a1097","line":17,"updated":"2016-04-01 21:03:16.000000000","message":"isn\u0027t it weird to have references from the shadow_backends driver to identity.backends? I thought the whole point of this change was to avoid these kinds of entanglements.","commit_id":"d87302e6deba8292f36384d31eb743762c9d9a18"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"1f2d2ed4dec870af23e99916ea845752905add31","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from keystone.common import sql"},{"line_number":16,"context_line":"from keystone import exception"},{"line_number":17,"context_line":"from keystone.identity.backends import base as identity_base"},{"line_number":18,"context_line":"from keystone.identity.backends import sql as model"},{"line_number":19,"context_line":"from keystone.identity.shadow_backends import base"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"ba0121b8_840b3c2b","line":17,"in_reply_to":"ba0121b8_b23a1097","updated":"2016-04-02 20:59:02.000000000","message":"The point of this change is to remove driver -\u003e core dependencies.  Driver to driver should be fine.","commit_id":"d87302e6deba8292f36384d31eb743762c9d9a18"}]}
