)]}'
{"keystone/assignment/backends/sql.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"7083dd354ffce0227d9ccd73120b77a0cf75adb9","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    def default_role_driver(self):"},{"line_number":53,"context_line":"        return \u0027sql\u0027"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def default_resource_driver(self):"},{"line_number":56,"context_line":"        return \u0027sql\u0027"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def create_grant(self, role_id, user_id\u003dNone, group_id\u003dNone,"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa69d971_04467123","side":"PARENT","line":55,"updated":"2015-12-30 14:24:00.000000000","message":"This should be split up into separate changes - 1 to remove default_resource_driver (and default_role_driver?) and a separate one to remove ldap drivers.","commit_id":"6d7e9e40375c5d4a661b7c08692841a127681cac"}],"keystone/assignment/core.py":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"57d1a18271db9b64254465c92864af1235eb91a5","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    def __init__(self):"},{"line_number":58,"context_line":"        assignment_driver \u003d CONF.assignment.driver"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        # If there is no explicit assignment driver specified, we let the"},{"line_number":61,"context_line":"        # identity driver tell us what to use. This is for backward"},{"line_number":62,"context_line":"        # compatibility reasons from the time when identity, resource and"},{"line_number":63,"context_line":"        # assignment were all part of identity."}],"source_content_type":"text/x-python","patch_set":18,"id":"ba63e191_cad5b143","side":"PARENT","line":60,"updated":"2016-01-19 13:26:55.000000000","message":"Is this OK to remove now? And if so can we remove the default_assignment_driver methods?","commit_id":"e27991e61a55ab8a0f237b6ab34342170632d22d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a03c6f6a674cc49fbc3aab234e4f9191a334cd15","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        # identity driver tell us what to use. This is for backward"},{"line_number":62,"context_line":"        # compatibility reasons from the time when identity, resource and"},{"line_number":63,"context_line":"        # assignment were all part of identity."},{"line_number":64,"context_line":"        if assignment_driver is None:"},{"line_number":65,"context_line":"            identity_driver \u003d dependency.get_provider(\u0027identity_api\u0027).driver"},{"line_number":66,"context_line":"            assignment_driver \u003d identity_driver.default_assignment_driver()"},{"line_number":67,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"ba63e191_53f3ae9e","side":"PARENT","line":64,"updated":"2016-01-19 16:44:29.000000000","message":"We never deprecated this functionality so we shouldn\u0027t be removing it. A deployment might be relying on this for their custom driver.","commit_id":"e27991e61a55ab8a0f237b6ab34342170632d22d"}],"keystone/common/config.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a03c6f6a674cc49fbc3aab234e4f9191a334cd15","unresolved":false,"context_lines":[{"line_number":371,"context_line":"    \u0027assignment\u0027: ["},{"line_number":372,"context_line":"        cfg.StrOpt(\u0027driver\u0027,"},{"line_number":373,"context_line":"                   help\u003d\u0027Entrypoint for the assignment backend driver in the \u0027"},{"line_number":374,"context_line":"                        \u0027keystone.assignment namespace. Only an SQL driver is \u0027"},{"line_number":375,"context_line":"                        \u0027supplied.\u0027,"},{"line_number":376,"context_line":"                   default\u003d\u0027sql\u0027),"},{"line_number":377,"context_line":"    ],"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba63e191_53fdee38","line":374,"updated":"2016-01-19 16:44:29.000000000","message":"change \"SQL\" to \"sql\", since that\u0027s the string they have to use.","commit_id":"6ba5da5bc8ec06186926f56543319d74699339d5"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a03c6f6a674cc49fbc3aab234e4f9191a334cd15","unresolved":false,"context_lines":[{"line_number":378,"context_line":"    \u0027resource\u0027: ["},{"line_number":379,"context_line":"        cfg.StrOpt(\u0027driver\u0027,"},{"line_number":380,"context_line":"                   help\u003d\u0027Entrypoint for the resource backend driver in the \u0027"},{"line_number":381,"context_line":"                        \u0027keystone.resource namespace. Only an SQL driver is \u0027"},{"line_number":382,"context_line":"                        \u0027supplied. If a resource driver is not specified, \u0027"},{"line_number":383,"context_line":"                        \u0027the assignment driver will choose the resource \u0027"},{"line_number":384,"context_line":"                        \u0027driver.\u0027),"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba63e191_33995a20","line":381,"updated":"2016-01-19 16:44:29.000000000","message":"Change \"SQL\" to \"sql\" since that\u0027s the string they have to use.","commit_id":"6ba5da5bc8ec06186926f56543319d74699339d5"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"57d1a18271db9b64254465c92864af1235eb91a5","unresolved":false,"context_lines":[{"line_number":381,"context_line":"                        \u0027keystone.resource namespace. Only an SQL driver is \u0027"},{"line_number":382,"context_line":"                        \u0027supplied. If a resource driver is not specified, \u0027"},{"line_number":383,"context_line":"                        \u0027the assignment driver will choose the resource \u0027"},{"line_number":384,"context_line":"                        \u0027driver.\u0027),"},{"line_number":385,"context_line":"        cfg.BoolOpt(\u0027caching\u0027, default\u003dTrue,"},{"line_number":386,"context_line":"                    deprecated_opts\u003d[cfg.DeprecatedOpt(\u0027caching\u0027,"},{"line_number":387,"context_line":"                                                       group\u003d\u0027assignment\u0027)],"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba63e191_0a6ae980","line":384,"updated":"2016-01-19 13:26:55.000000000","message":"Should we just default this to SQL then?","commit_id":"6ba5da5bc8ec06186926f56543319d74699339d5"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"c48dafc8eacf3f87a130a94d2076427450d75379","unresolved":false,"context_lines":[{"line_number":381,"context_line":"                        \u0027keystone.resource namespace. Only an SQL driver is \u0027"},{"line_number":382,"context_line":"                        \u0027supplied. If a resource driver is not specified, \u0027"},{"line_number":383,"context_line":"                        \u0027the assignment driver will choose the resource \u0027"},{"line_number":384,"context_line":"                        \u0027driver.\u0027),"},{"line_number":385,"context_line":"        cfg.BoolOpt(\u0027caching\u0027, default\u003dTrue,"},{"line_number":386,"context_line":"                    deprecated_opts\u003d[cfg.DeprecatedOpt(\u0027caching\u0027,"},{"line_number":387,"context_line":"                                                       group\u003d\u0027assignment\u0027)],"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba63e191_e269b18c","line":384,"in_reply_to":"ba63e191_0a6ae980","updated":"2016-01-19 16:03:41.000000000","message":"Resource is still dependant on assignment. Assignment is not dependant on identity anymore because LDAP is gone.","commit_id":"6ba5da5bc8ec06186926f56543319d74699339d5"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"93e283211014001bb700c80ac7cd5d930bf72d78","unresolved":false,"context_lines":[{"line_number":381,"context_line":"                        \u0027keystone.resource namespace. Only an SQL driver is \u0027"},{"line_number":382,"context_line":"                        \u0027supplied. If a resource driver is not specified, \u0027"},{"line_number":383,"context_line":"                        \u0027the assignment driver will choose the resource \u0027"},{"line_number":384,"context_line":"                        \u0027driver.\u0027),"},{"line_number":385,"context_line":"        cfg.BoolOpt(\u0027caching\u0027, default\u003dTrue,"},{"line_number":386,"context_line":"                    deprecated_opts\u003d[cfg.DeprecatedOpt(\u0027caching\u0027,"},{"line_number":387,"context_line":"                                                       group\u003d\u0027assignment\u0027)],"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba63e191_903b5cd1","line":384,"in_reply_to":"ba63e191_e269b18c","updated":"2016-01-19 16:12:41.000000000","message":"We just talked about doing this in a follow up patch. I\u0027m happy with that.","commit_id":"6ba5da5bc8ec06186926f56543319d74699339d5"}],"keystone/tests/unit/backend/role/test_ldap.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"bd9b3a0f35aef21c3924adbfb5477537ef460b7a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"fa69d971_2356a8ce","updated":"2016-01-04 22:58:26.000000000","message":"this should not be removed, since we didn\u0027t formally deprecate the role backend","commit_id":"fb8256e9838245412056b627eb007e6539062688"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"b897f7c2663c2054b9f0340b91453f18d5803d56","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"ba63e191_2e1da173","side":"PARENT","updated":"2016-01-19 00:40:15.000000000","message":"undo this change","commit_id":"1baa32afd0b43887125e35cfba4597556fc187df"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"fe50c81ee4f98da06258acc3b51ff8b386aba0ec","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"ba63e191_290a7bd3","side":"PARENT","in_reply_to":"ba63e191_2e1da173","updated":"2016-01-19 00:52:54.000000000","message":"Lets delete the role LDAP backend as well. The original email that was sent announcing the deprecate explicitly called out role as well as assignment/resource/etc.\n\nThe \"holding on\" for the 2 cycle deprecation for LDAP role seems quite pointless.","commit_id":"1baa32afd0b43887125e35cfba4597556fc187df"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a03c6f6a674cc49fbc3aab234e4f9191a334cd15","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class LdapRole(LdapRoleCommon, core_ldap.BaseBackendLdap, unit.TestCase):"},{"line_number":36,"context_line":"    \"\"\"Test in an all-LDAP configuration."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    Include additional tests that are unique to LDAP (or need to be overridden)"},{"line_number":39,"context_line":"    which only need to be run in a basic LDAP configurations."}],"source_content_type":"text/x-python","patch_set":18,"id":"ba63e191_b35a2a4f","line":36,"updated":"2016-01-19 16:44:29.000000000","message":"Apparently this test is invalid, so we should be getting rid of it.","commit_id":"6ba5da5bc8ec06186926f56543319d74699339d5"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"0939bd4084f222c7b0574f50f3dedd77516f0957","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class LdapRole(LdapRoleCommon, core_ldap.BaseBackendLdap, unit.TestCase):"},{"line_number":36,"context_line":"    \"\"\"Test in an all-LDAP configuration."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    Include additional tests that are unique to LDAP (or need to be overridden)"},{"line_number":39,"context_line":"    which only need to be run in a basic LDAP configurations."}],"source_content_type":"text/x-python","patch_set":18,"id":"ba63e191_b6221800","line":36,"in_reply_to":"ba63e191_b35a2a4f","updated":"2016-01-19 16:48:16.000000000","message":"this is removed in the follow up when the ldap backend for role is removed","commit_id":"6ba5da5bc8ec06186926f56543319d74699339d5"}],"keystone/tests/unit/test_backend_ldap.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"bd9b3a0f35aef21c3924adbfb5477537ef460b7a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"fa69d971_6307c0ca","updated":"2016-01-04 22:58:26.000000000","message":"need to go through these more carefully","commit_id":"fb8256e9838245412056b627eb007e6539062688"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a03c6f6a674cc49fbc3aab234e4f9191a334cd15","unresolved":false,"context_lines":[{"line_number":923,"context_line":"        # credentials) that require a database."},{"line_number":924,"context_line":"        self.useFixture(database.Database())"},{"line_number":925,"context_line":"        super(LDAPIdentity, self).setUp()"},{"line_number":926,"context_line":"        _assert_backends(self, identity\u003d\u0027ldap\u0027)"},{"line_number":927,"context_line":""},{"line_number":928,"context_line":"    def load_fixtures(self, fixtures):"},{"line_number":929,"context_line":"        # Override super impl since need to create group container."}],"source_content_type":"text/x-python","patch_set":18,"id":"ba63e191_96b03445","line":926,"updated":"2016-01-19 16:44:29.000000000","message":"we should continue to assert what the other backends are, just for documentation.","commit_id":"6ba5da5bc8ec06186926f56543319d74699339d5"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a03c6f6a674cc49fbc3aab234e4f9191a334cd15","unresolved":false,"context_lines":[{"line_number":1775,"context_line":""},{"line_number":1776,"context_line":"        self.useFixture(ldapdb.LDAPDatabase())"},{"line_number":1777,"context_line":"        self.useFixture(database.Database())"},{"line_number":1778,"context_line":"        self.useFixture(database.Database(self.sql_driver_version_overrides))"},{"line_number":1779,"context_line":"        self.load_backends()"},{"line_number":1780,"context_line":"        self.load_fixtures(default_fixtures)"},{"line_number":1781,"context_line":"        test_backend.LimitTests.setUp(self)"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba63e191_d641cc0c","line":1778,"updated":"2016-01-19 16:44:29.000000000","message":"why does this need to be done twice? Add a comment.","commit_id":"6ba5da5bc8ec06186926f56543319d74699339d5"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a03c6f6a674cc49fbc3aab234e4f9191a334cd15","unresolved":false,"context_lines":[{"line_number":1779,"context_line":"        self.load_backends()"},{"line_number":1780,"context_line":"        self.load_fixtures(default_fixtures)"},{"line_number":1781,"context_line":"        test_backend.LimitTests.setUp(self)"},{"line_number":1782,"context_line":"        _assert_backends(self, identity\u003d\u0027ldap\u0027)"},{"line_number":1783,"context_line":""},{"line_number":1784,"context_line":"    def config_overrides(self):"},{"line_number":1785,"context_line":"        super(LDAPLimitTests, self).config_overrides()"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba63e191_566ddc96","line":1782,"updated":"2016-01-19 16:44:29.000000000","message":"This should assert the type of all backends to serve as documentation. This comment applies for all the _assert_backends() changes.","commit_id":"6ba5da5bc8ec06186926f56543319d74699339d5"}],"releasenotes/notes/removed-as-of-mitaka-9ff14f87d0b98e7e.yaml":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a03c6f6a674cc49fbc3aab234e4f9191a334cd15","unresolved":false,"context_lines":[{"line_number":29,"context_line":"  - \u003e"},{"line_number":30,"context_line":"    [`blueprint removed-as-of-mitaka \u003chttps://blueprints.launchpad.net/keystone/+spec/removed-as-of-mitaka\u003e`_]"},{"line_number":31,"context_line":"    The LDAP backend for Resource has been removed. This was deprecated in"},{"line_number":32,"context_line":"    the Kilo release."}],"source_content_type":"text/x-yaml","patch_set":18,"id":"ba63e191_36a5c8b4","line":32,"updated":"2016-01-19 16:44:29.000000000","message":"The note should also say that the default config value has changed for the assignment driver.","commit_id":"6ba5da5bc8ec06186926f56543319d74699339d5"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"0939bd4084f222c7b0574f50f3dedd77516f0957","unresolved":false,"context_lines":[{"line_number":29,"context_line":"  - \u003e"},{"line_number":30,"context_line":"    [`blueprint removed-as-of-mitaka \u003chttps://blueprints.launchpad.net/keystone/+spec/removed-as-of-mitaka\u003e`_]"},{"line_number":31,"context_line":"    The LDAP backend for Resource has been removed. This was deprecated in"},{"line_number":32,"context_line":"    the Kilo release."}],"source_content_type":"text/x-yaml","patch_set":18,"id":"ba63e191_3664e847","line":32,"in_reply_to":"ba63e191_36a5c8b4","updated":"2016-01-19 16:48:16.000000000","message":"good call","commit_id":"6ba5da5bc8ec06186926f56543319d74699339d5"}],"setup.cfg":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"b897f7c2663c2054b9f0340b91453f18d5803d56","unresolved":false,"context_lines":[{"line_number":136,"context_line":"    sql \u003d keystone.resource.config_backends.sql:DomainConfig"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"keystone.role \u003d"},{"line_number":139,"context_line":"    ldap \u003d keystone.assignment.role_backends.ldap:Role"},{"line_number":140,"context_line":"    sql \u003d keystone.assignment.role_backends.sql:Role"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"keystone.token.persistence \u003d"}],"source_content_type":"text/x-ttcn-cfg","patch_set":15,"id":"ba63e191_4eaa551b","side":"PARENT","line":139,"range":{"start_line":139,"start_character":4,"end_line":139,"end_character":54},"updated":"2016-01-19 00:40:15.000000000","message":"we can\u0027t remove this one yet, it was never deprecated","commit_id":"1baa32afd0b43887125e35cfba4597556fc187df"}]}
