)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"70f1e61f9a5e105cef0a77e82379d8766a14bd84","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Previous patches have:"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"- Moved role management into its own manager and drivers"},{"line_number":17,"context_line":"- Fixed incorrect doc strings for grant driver methods"},{"line_number":18,"context_line":"- Updated controllers to call the new role manager"},{"line_number":19,"context_line":"- Updated unit tests to call the new role manager"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"1a930d6b_60eb1cdc","line":16,"updated":"2015-01-27 16:16:57.000000000","message":"Provide the commit hash so I can verify this is correct.","commit_id":"746a18f82b1642fb4924a353af2c7be77bb02a0d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e850663a0e531efc35f3e2c9065e71da2e19fcc7","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Previous patches have:"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"- Moved role management into its own manager and drivers"},{"line_number":17,"context_line":"- Fixed incorrect doc strings for grant driver methods"},{"line_number":18,"context_line":"- Updated controllers to call the new role manager"},{"line_number":19,"context_line":"- Updated unit tests to call the new role manager"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"1a930d6b_79a10ef7","line":16,"in_reply_to":"1a930d6b_4399c577","updated":"2015-01-27 17:58:36.000000000","message":"All of them. It should be easy for reviewers to verify the information in the commit message.\n\nI don\u0027t know why this list is here, but if it\u0027s important for it to be here then reviewers should make sure that it\u0027s correct.","commit_id":"746a18f82b1642fb4924a353af2c7be77bb02a0d"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"af7f64aca87484e954cc9d1a8616a126781a7306","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Previous patches have:"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"- Moved role management into its own manager and drivers"},{"line_number":17,"context_line":"- Fixed incorrect doc strings for grant driver methods"},{"line_number":18,"context_line":"- Updated controllers to call the new role manager"},{"line_number":19,"context_line":"- Updated unit tests to call the new role manager"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"1a930d6b_4399c577","line":16,"in_reply_to":"1a930d6b_60eb1cdc","updated":"2015-01-27 17:23:28.000000000","message":"These are all individual commits/patches - is it just the first one you are interested in, or all of them?  The first one:\n\nGerrit: https://review.openstack.org/#/c/144239/\n\nChangeID: I41fc23a049c26e514222a966c1847e183448be00","commit_id":"746a18f82b1642fb4924a353af2c7be77bb02a0d"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"e7442f663b2cb887473f3d42ff3c6893e1811250","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Previous patches have:"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"- Moved role management into its own manager and drivers"},{"line_number":17,"context_line":"- Fixed incorrect doc strings for grant driver methods"},{"line_number":18,"context_line":"- Updated controllers to call the new role manager"},{"line_number":19,"context_line":"- Updated unit tests to call the new role manager"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"fa81d914_8a5d6b4b","line":16,"in_reply_to":"1a930d6b_79a10ef7","updated":"2015-01-27 18:44:37.000000000","message":"So included the list to try and help reviewers understand where this review its on the overall split of assignments.  If the general view is that is isn\u0027t helpful, I\u0027ll cull it. Otherwise, I\u0027ll at the gerrit review links","commit_id":"746a18f82b1642fb4924a353af2c7be77bb02a0d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"70f1e61f9a5e105cef0a77e82379d8766a14bd84","unresolved":false,"context_lines":[{"line_number":28,"context_line":"Future patches will:"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"- Remove unused pointer to assignment in identity driver"},{"line_number":31,"context_line":"- Update the controllers to call the new resource manager"},{"line_number":32,"context_line":"- Update the tests to call the new resource manager"},{"line_number":33,"context_line":"- Split the assignment controller, giving projects/domains"},{"line_number":34,"context_line":"  their own controller"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"1a930d6b_a0a7c4bb","line":31,"updated":"2015-01-27 16:16:57.000000000","message":"Is this \"Make controllers and managers reference new resource manager\"?","commit_id":"746a18f82b1642fb4924a353af2c7be77bb02a0d"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"af7f64aca87484e954cc9d1a8616a126781a7306","unresolved":false,"context_lines":[{"line_number":28,"context_line":"Future patches will:"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"- Remove unused pointer to assignment in identity driver"},{"line_number":31,"context_line":"- Update the controllers to call the new resource manager"},{"line_number":32,"context_line":"- Update the tests to call the new resource manager"},{"line_number":33,"context_line":"- Split the assignment controller, giving projects/domains"},{"line_number":34,"context_line":"  their own controller"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"1a930d6b_e060e702","line":31,"in_reply_to":"1a930d6b_a0a7c4bb","updated":"2015-01-27 17:23:28.000000000","message":"Yes, I\u0027ll update the text to match","commit_id":"746a18f82b1642fb4924a353af2c7be77bb02a0d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"70f1e61f9a5e105cef0a77e82379d8766a14bd84","unresolved":false,"context_lines":[{"line_number":31,"context_line":"- Update the controllers to call the new resource manager"},{"line_number":32,"context_line":"- Update the tests to call the new resource manager"},{"line_number":33,"context_line":"- Split the assignment controller, giving projects/domains"},{"line_number":34,"context_line":"  their own controller"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"Partially implements: bp pluggable-assignments"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"1a930d6b_e09b8c63","line":34,"updated":"2015-01-27 16:16:57.000000000","message":"I don\u0027t see this one is proposed.","commit_id":"746a18f82b1642fb4924a353af2c7be77bb02a0d"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"e7442f663b2cb887473f3d42ff3c6893e1811250","unresolved":false,"context_lines":[{"line_number":31,"context_line":"- Update the controllers to call the new resource manager"},{"line_number":32,"context_line":"- Update the tests to call the new resource manager"},{"line_number":33,"context_line":"- Split the assignment controller, giving projects/domains"},{"line_number":34,"context_line":"  their own controller"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"Partially implements: bp pluggable-assignments"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"fa81d914_eaa6e752","line":34,"in_reply_to":"1a930d6b_e09b8c63","updated":"2015-01-27 18:44:37.000000000","message":"It\u0027s here: https://review.openstack.org/#/c/132634/","commit_id":"746a18f82b1642fb4924a353af2c7be77bb02a0d"}],"doc/source/configuration.rst":[{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"fa4bdf41d1cef484d63abb2ece84c3469566f50c","unresolved":false,"context_lines":[{"line_number":497,"context_line":"        (``list_projects``, ``list_domains``, etc) methods are not subject to"},{"line_number":498,"context_line":"        caching."},{"line_number":499,"context_line":""},{"line_number":500,"context_line":"        .. WARNING::"},{"line_number":501,"context_line":"            Be aware that if a read-only ``resource`` backend is in use, the cache"},{"line_number":502,"context_line":"            will not immediately reflect changes on the back end.  Any given change"},{"line_number":503,"context_line":"            may take up to the ``cache_time`` (if set in the ``[resource]``"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3a961159_241834cc","line":500,"updated":"2015-01-09 03:47:07.000000000","message":"Is it possible to connect a read-only ``resource`` backend?\nIf not, we need to remove this section.\n\nFrom what is said on he second paragraph of section \u0027Read Only LDAP\u0027 (starting at line 1489), it looks like it is only possible to connect a read-only LDAP, and it is for identity.\n\nIf that\u0027s true, this warning can be removed or not in this patch, as it has not been introduced by it.","commit_id":"fe2fc5d736293524441c7afcf219d4eaeb5242ec"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"556833c494cac8a28738cd0cbaf9b487e8d7247b","unresolved":false,"context_lines":[{"line_number":497,"context_line":"        (``list_projects``, ``list_domains``, etc) methods are not subject to"},{"line_number":498,"context_line":"        caching."},{"line_number":499,"context_line":""},{"line_number":500,"context_line":"        .. WARNING::"},{"line_number":501,"context_line":"            Be aware that if a read-only ``resource`` backend is in use, the cache"},{"line_number":502,"context_line":"            will not immediately reflect changes on the back end.  Any given change"},{"line_number":503,"context_line":"            may take up to the ``cache_time`` (if set in the ``[resource]``"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3a961159_5eb85de8","line":500,"in_reply_to":"3a961159_241834cc","updated":"2015-01-13 04:35:50.000000000","message":"Yes, it is possible to connect a read-only reassure backend.","commit_id":"fe2fc5d736293524441c7afcf219d4eaeb5242ec"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"d08ba58cee5563d619fa28d4eab805ebca0ed6d1","unresolved":false,"context_lines":[{"line_number":513,"context_line":"        that can be set to a value above or below the global ``expiration_time``"},{"line_number":514,"context_line":"        default, allowing for different caching behavior from the other systems in"},{"line_number":515,"context_line":"        ``Keystone``.  This option is set in the ``[role]`` section of the"},{"line_number":516,"context_line":"        configuration file."},{"line_number":517,"context_line":""},{"line_number":518,"context_line":"For more information about the different backends (and configuration options):"},{"line_number":519,"context_line":"    * `dogpile.cache.backends.memory`_"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3a961159_b5660254","line":516,"updated":"2015-01-09 15:34:40.000000000","message":"From what is said on the section \u0027Configuring the LDAP Identity Provider\u0027, it looks like it is possible to connect a read-only LDAP for role backend.\n\nWe should then add a warning similar to the above here. (in the patch that splits role backend, ofc)","commit_id":"fe2fc5d736293524441c7afcf219d4eaeb5242ec"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"556833c494cac8a28738cd0cbaf9b487e8d7247b","unresolved":false,"context_lines":[{"line_number":513,"context_line":"        that can be set to a value above or below the global ``expiration_time``"},{"line_number":514,"context_line":"        default, allowing for different caching behavior from the other systems in"},{"line_number":515,"context_line":"        ``Keystone``.  This option is set in the ``[role]`` section of the"},{"line_number":516,"context_line":"        configuration file."},{"line_number":517,"context_line":""},{"line_number":518,"context_line":"For more information about the different backends (and configuration options):"},{"line_number":519,"context_line":"    * `dogpile.cache.backends.memory`_"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3a961159_7ebb59e4","line":516,"in_reply_to":"3a961159_b5660254","updated":"2015-01-13 04:35:50.000000000","message":"agreed - have added the warning","commit_id":"fe2fc5d736293524441c7afcf219d4eaeb5242ec"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"fa4bdf41d1cef484d63abb2ece84c3469566f50c","unresolved":false,"context_lines":[{"line_number":1491,"context_line":"directories can be easily integrated as it now enables its identity"},{"line_number":1492,"context_line":"entities (which comprises users, groups, and group memberships) to be"},{"line_number":1493,"context_line":"served out of directories while resource (which comprises projects"},{"line_number":1494,"context_line":"and domains) assignments and roles are to be served from different"},{"line_number":1495,"context_line":"Keystone backends (i.e. SQL). To enable this option, you must have the"},{"line_number":1496,"context_line":"following ``keystone.conf`` options set:"},{"line_number":1497,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"3a961159_64cb1c1e","line":1494,"updated":"2015-01-09 03:47:07.000000000","message":"As we are now talking about three backends (resource, assignments and roles), I think it needs a comma after \u0027domains)\u0027","commit_id":"fe2fc5d736293524441c7afcf219d4eaeb5242ec"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"556833c494cac8a28738cd0cbaf9b487e8d7247b","unresolved":false,"context_lines":[{"line_number":1491,"context_line":"directories can be easily integrated as it now enables its identity"},{"line_number":1492,"context_line":"entities (which comprises users, groups, and group memberships) to be"},{"line_number":1493,"context_line":"served out of directories while resource (which comprises projects"},{"line_number":1494,"context_line":"and domains) assignments and roles are to be served from different"},{"line_number":1495,"context_line":"Keystone backends (i.e. SQL). To enable this option, you must have the"},{"line_number":1496,"context_line":"following ``keystone.conf`` options set:"},{"line_number":1497,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"3a961159_9eb2c504","line":1494,"in_reply_to":"3a961159_64cb1c1e","updated":"2015-01-13 04:35:50.000000000","message":"Done","commit_id":"fe2fc5d736293524441c7afcf219d4eaeb5242ec"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"fa4bdf41d1cef484d63abb2ece84c3469566f50c","unresolved":false,"context_lines":[{"line_number":1501,"context_line":"  driver \u003d keystone.identity.backends.ldap.Identity"},{"line_number":1502,"context_line":""},{"line_number":1503,"context_line":"  [resource]"},{"line_number":1504,"context_line":"  driver \u003d keystone.resource.backends.sql.Assignment"},{"line_number":1505,"context_line":""},{"line_number":1506,"context_line":"  [assignment]"},{"line_number":1507,"context_line":"  driver \u003d keystone.assignment.backends.sql.Assignment"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3a961159_a4b6e486","line":1504,"updated":"2015-01-09 03:47:07.000000000","message":"typo: keystone.resource.backends.sql.Resource","commit_id":"fe2fc5d736293524441c7afcf219d4eaeb5242ec"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"556833c494cac8a28738cd0cbaf9b487e8d7247b","unresolved":false,"context_lines":[{"line_number":1501,"context_line":"  driver \u003d keystone.identity.backends.ldap.Identity"},{"line_number":1502,"context_line":""},{"line_number":1503,"context_line":"  [resource]"},{"line_number":1504,"context_line":"  driver \u003d keystone.resource.backends.sql.Assignment"},{"line_number":1505,"context_line":""},{"line_number":1506,"context_line":"  [assignment]"},{"line_number":1507,"context_line":"  driver \u003d keystone.assignment.backends.sql.Assignment"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3a961159_5e9f7d65","line":1504,"in_reply_to":"3a961159_a4b6e486","updated":"2015-01-13 04:35:50.000000000","message":"Done","commit_id":"fe2fc5d736293524441c7afcf219d4eaeb5242ec"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"21c90026b5e6e1d9a597ba50c698cbca277950b3","unresolved":false,"context_lines":[{"line_number":504,"context_line":"        The resource system has a separate ``cache_time`` configuration option,"},{"line_number":505,"context_line":"        that can be set to a value above or below the global"},{"line_number":506,"context_line":"        ``expiration_time`` default, allowing for different caching behavior"},{"line_number":507,"context_line":"        from the other systems in ``Keystone``.  This option is set in the"},{"line_number":508,"context_line":"        ``[resource]`` section of the configuration file."},{"line_number":509,"context_line":""},{"line_number":510,"context_line":"        Currently ``resource`` has caching for ``project`` and ``domain``"}],"source_content_type":"text/x-rst","patch_set":15,"id":"1a930d6b_329054ec","line":507,"updated":"2015-01-21 14:19:52.000000000","message":"(nit) unrelated double space","commit_id":"0a10f2e1383d50ea4f558a1bbe6426d695d279ff"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"4f9e6d94f3e012d9b595deecec91c6be413eb946","unresolved":false,"context_lines":[{"line_number":504,"context_line":"        The resource system has a separate ``cache_time`` configuration option,"},{"line_number":505,"context_line":"        that can be set to a value above or below the global"},{"line_number":506,"context_line":"        ``expiration_time`` default, allowing for different caching behavior"},{"line_number":507,"context_line":"        from the other systems in ``Keystone``.  This option is set in the"},{"line_number":508,"context_line":"        ``[resource]`` section of the configuration file."},{"line_number":509,"context_line":""},{"line_number":510,"context_line":"        Currently ``resource`` has caching for ``project`` and ``domain``"}],"source_content_type":"text/x-rst","patch_set":15,"id":"1a930d6b_2b037ab9","line":507,"in_reply_to":"1a930d6b_329054ec","updated":"2015-01-21 15:47:44.000000000","message":"Done","commit_id":"0a10f2e1383d50ea4f558a1bbe6426d695d279ff"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"21c90026b5e6e1d9a597ba50c698cbca277950b3","unresolved":false,"context_lines":[{"line_number":509,"context_line":""},{"line_number":510,"context_line":"        Currently ``resource`` has caching for ``project`` and ``domain``"},{"line_number":511,"context_line":"        specific requests (primarily around the CRUD actions).  The list "},{"line_number":512,"context_line":"        (``list_projects``, ``list_domains``, etc) methods are not subject to"},{"line_number":513,"context_line":"        caching."},{"line_number":514,"context_line":""},{"line_number":515,"context_line":"        .. WARNING::"}],"source_content_type":"text/x-rst","patch_set":15,"id":"1a930d6b_b27284e3","line":512,"updated":"2015-01-21 14:19:52.000000000","message":"(nit) I think there is no need to keep \u0027, etc\u0027, since the only two list_\u003centity\u003e we have now are those listed.","commit_id":"0a10f2e1383d50ea4f558a1bbe6426d695d279ff"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"4f9e6d94f3e012d9b595deecec91c6be413eb946","unresolved":false,"context_lines":[{"line_number":509,"context_line":""},{"line_number":510,"context_line":"        Currently ``resource`` has caching for ``project`` and ``domain``"},{"line_number":511,"context_line":"        specific requests (primarily around the CRUD actions).  The list "},{"line_number":512,"context_line":"        (``list_projects``, ``list_domains``, etc) methods are not subject to"},{"line_number":513,"context_line":"        caching."},{"line_number":514,"context_line":""},{"line_number":515,"context_line":"        .. WARNING::"}],"source_content_type":"text/x-rst","patch_set":15,"id":"1a930d6b_4b17e6ed","line":512,"in_reply_to":"1a930d6b_b27284e3","updated":"2015-01-21 15:47:44.000000000","message":"Done","commit_id":"0a10f2e1383d50ea4f558a1bbe6426d695d279ff"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"21c90026b5e6e1d9a597ba50c698cbca277950b3","unresolved":false,"context_lines":[{"line_number":1529,"context_line":"Keystone now provides an option whereby these read-only directories can be"},{"line_number":1530,"context_line":"easily integrated as it now enables its identity entities (which comprises"},{"line_number":1531,"context_line":"users, groups, and group memberships) to be served out of directories while"},{"line_number":1532,"context_line":"assignments (which comprises projects and domains), assignment and role"},{"line_number":1533,"context_line":"entities are to be served from different Keystone backends (i.e. SQL). To"},{"line_number":1534,"context_line":"enable this option, you must have the following ``keystone.conf`` options set:"},{"line_number":1535,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"1a930d6b_52188084","line":1532,"updated":"2015-01-21 14:19:52.000000000","message":"Replace the first \u0027assignments\u0027 by \u0027resource\u0027\n\nMaybe the second \u0027assignments\u0027 should be kept as \u0027role assignment\u0027","commit_id":"0a10f2e1383d50ea4f558a1bbe6426d695d279ff"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"4f9e6d94f3e012d9b595deecec91c6be413eb946","unresolved":false,"context_lines":[{"line_number":1529,"context_line":"Keystone now provides an option whereby these read-only directories can be"},{"line_number":1530,"context_line":"easily integrated as it now enables its identity entities (which comprises"},{"line_number":1531,"context_line":"users, groups, and group memberships) to be served out of directories while"},{"line_number":1532,"context_line":"assignments (which comprises projects and domains), assignment and role"},{"line_number":1533,"context_line":"entities are to be served from different Keystone backends (i.e. SQL). To"},{"line_number":1534,"context_line":"enable this option, you must have the following ``keystone.conf`` options set:"},{"line_number":1535,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"1a930d6b_4bb6063f","line":1532,"in_reply_to":"1a930d6b_52188084","updated":"2015-01-21 15:47:44.000000000","message":"Done","commit_id":"0a10f2e1383d50ea4f558a1bbe6426d695d279ff"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f1320e8e7f3cf1c522c1de3ddc124418b4cfdb73","unresolved":false,"context_lines":[{"line_number":500,"context_line":"        revocation list is refreshed whenever a token is revoked. It typically"},{"line_number":501,"context_line":"        sees significantly more requests than specific token retrievals or"},{"line_number":502,"context_line":"        token validation calls."},{"line_number":503,"context_line":"    * ``resource``"},{"line_number":504,"context_line":"        The resource system has a separate ``cache_time`` configuration option,"},{"line_number":505,"context_line":"        that can be set to a value above or below the global"},{"line_number":506,"context_line":"        ``expiration_time`` default, allowing for different caching behavior"}],"source_content_type":"text/x-rst","patch_set":16,"id":"1a930d6b_5aec4dbb","line":503,"updated":"2015-01-27 15:09:35.000000000","message":"assignment still exists and has a separate ``cache_time`` configuration option.","commit_id":"746a18f82b1642fb4924a353af2c7be77bb02a0d"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"e7442f663b2cb887473f3d42ff3c6893e1811250","unresolved":false,"context_lines":[{"line_number":500,"context_line":"        revocation list is refreshed whenever a token is revoked. It typically"},{"line_number":501,"context_line":"        sees significantly more requests than specific token retrievals or"},{"line_number":502,"context_line":"        token validation calls."},{"line_number":503,"context_line":"    * ``resource``"},{"line_number":504,"context_line":"        The resource system has a separate ``cache_time`` configuration option,"},{"line_number":505,"context_line":"        that can be set to a value above or below the global"},{"line_number":506,"context_line":"        ``expiration_time`` default, allowing for different caching behavior"}],"source_content_type":"text/x-rst","patch_set":16,"id":"1a930d6b_03a17d93","line":503,"in_reply_to":"1a930d6b_00fc18b7","updated":"2015-01-27 18:44:37.000000000","message":"yep","commit_id":"746a18f82b1642fb4924a353af2c7be77bb02a0d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e900c657727b2fd52fb559a0035bca5218bb81be","unresolved":false,"context_lines":[{"line_number":500,"context_line":"        revocation list is refreshed whenever a token is revoked. It typically"},{"line_number":501,"context_line":"        sees significantly more requests than specific token retrievals or"},{"line_number":502,"context_line":"        token validation calls."},{"line_number":503,"context_line":"    * ``resource``"},{"line_number":504,"context_line":"        The resource system has a separate ``cache_time`` configuration option,"},{"line_number":505,"context_line":"        that can be set to a value above or below the global"},{"line_number":506,"context_line":"        ``expiration_time`` default, allowing for different caching behavior"}],"source_content_type":"text/x-rst","patch_set":16,"id":"1a930d6b_00fc18b7","line":503,"in_reply_to":"1a930d6b_401c606a","updated":"2015-01-27 15:22:20.000000000","message":"ok. I see it\u0027s actually role that still exists in keystone.assignment.core, and that\u0027s still here.","commit_id":"746a18f82b1642fb4924a353af2c7be77bb02a0d"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"1b6dd62b79b63572d583b9bf9657cb8e9c795658","unresolved":false,"context_lines":[{"line_number":500,"context_line":"        revocation list is refreshed whenever a token is revoked. It typically"},{"line_number":501,"context_line":"        sees significantly more requests than specific token retrievals or"},{"line_number":502,"context_line":"        token validation calls."},{"line_number":503,"context_line":"    * ``resource``"},{"line_number":504,"context_line":"        The resource system has a separate ``cache_time`` configuration option,"},{"line_number":505,"context_line":"        that can be set to a value above or below the global"},{"line_number":506,"context_line":"        ``expiration_time`` default, allowing for different caching behavior"}],"source_content_type":"text/x-rst","patch_set":16,"id":"1a930d6b_401c606a","line":503,"in_reply_to":"1a930d6b_5aec4dbb","updated":"2015-01-27 15:14:50.000000000","message":"In fact assignment backend has no cache_time anymore, since it has no entity in it. It is now only charged of the assignment mappings.\n\nThe role entities that were in assignment are now in its own backend and has its cache_time. See line 526.","commit_id":"746a18f82b1642fb4924a353af2c7be77bb02a0d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"70f1e61f9a5e105cef0a77e82379d8766a14bd84","unresolved":false,"context_lines":[{"line_number":508,"context_line":"        ``[resource]`` section of the configuration file."},{"line_number":509,"context_line":""},{"line_number":510,"context_line":"        Currently ``resource`` has caching for ``project`` and ``domain``"},{"line_number":511,"context_line":"        specific requests (primarily around the CRUD actions).  The list"},{"line_number":512,"context_line":"        ``list_projects`` and ``list_domains`` methods are not subject to"},{"line_number":513,"context_line":"        caching."},{"line_number":514,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"1a930d6b_60ecfcbb","line":511,"updated":"2015-01-27 16:16:57.000000000","message":"remove \"list\"","commit_id":"746a18f82b1642fb4924a353af2c7be77bb02a0d"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"e7442f663b2cb887473f3d42ff3c6893e1811250","unresolved":false,"context_lines":[{"line_number":508,"context_line":"        ``[resource]`` section of the configuration file."},{"line_number":509,"context_line":""},{"line_number":510,"context_line":"        Currently ``resource`` has caching for ``project`` and ``domain``"},{"line_number":511,"context_line":"        specific requests (primarily around the CRUD actions).  The list"},{"line_number":512,"context_line":"        ``list_projects`` and ``list_domains`` methods are not subject to"},{"line_number":513,"context_line":"        caching."},{"line_number":514,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"1a930d6b_b6a7050a","line":511,"in_reply_to":"1a930d6b_60ecfcbb","updated":"2015-01-27 18:44:37.000000000","message":"Done","commit_id":"746a18f82b1642fb4924a353af2c7be77bb02a0d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"70f1e61f9a5e105cef0a77e82379d8766a14bd84","unresolved":false,"context_lines":[{"line_number":524,"context_line":"            caching specifically on ``resource``, in the ``[resource]`` section"},{"line_number":525,"context_line":"            of the configuration set ``caching`` to ``False``."},{"line_number":526,"context_line":"    * ``role``"},{"line_number":527,"context_line":"        Currently ``role`` has caching for ``get_role``, but not for"},{"line_number":528,"context_line":"        ``list_roles``. The role system has a separate ``cache_time``"},{"line_number":529,"context_line":"        configuration option, that can be set to a value above or below the"},{"line_number":530,"context_line":"        global ``expiration_time`` default, allowing for different caching"}],"source_content_type":"text/x-rst","patch_set":16,"id":"1a930d6b_e000ec67","line":527,"updated":"2015-01-27 16:16:57.000000000","message":"unrelated whitespace changes should be in a separate commit.","commit_id":"746a18f82b1642fb4924a353af2c7be77bb02a0d"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"e7442f663b2cb887473f3d42ff3c6893e1811250","unresolved":false,"context_lines":[{"line_number":524,"context_line":"            caching specifically on ``resource``, in the ``[resource]`` section"},{"line_number":525,"context_line":"            of the configuration set ``caching`` to ``False``."},{"line_number":526,"context_line":"    * ``role``"},{"line_number":527,"context_line":"        Currently ``role`` has caching for ``get_role``, but not for"},{"line_number":528,"context_line":"        ``list_roles``. The role system has a separate ``cache_time``"},{"line_number":529,"context_line":"        configuration option, that can be set to a value above or below the"},{"line_number":530,"context_line":"        global ``expiration_time`` default, allowing for different caching"}],"source_content_type":"text/x-rst","patch_set":16,"id":"1a930d6b_36b3154e","line":527,"in_reply_to":"1a930d6b_e000ec67","updated":"2015-01-27 18:44:37.000000000","message":"reverted","commit_id":"746a18f82b1642fb4924a353af2c7be77bb02a0d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"c4367b5a29b2e2f3ecfe753360059d131d82d804","unresolved":false,"context_lines":[{"line_number":524,"context_line":"            caching specifically on ``resource``, in the ``[resource]`` section"},{"line_number":525,"context_line":"            of the configuration set ``caching`` to ``False``."},{"line_number":526,"context_line":"    * ``role``"},{"line_number":527,"context_line":"        Currently ``role`` has caching for ``get_role``, but not for``list_roles``."},{"line_number":528,"context_line":"        The role system has a separate ``cache_time`` configuration option,"},{"line_number":529,"context_line":"        that can be set to a value above or below the global ``expiration_time``"},{"line_number":530,"context_line":"        default, allowing for different caching behavior from the other systems in"}],"source_content_type":"text/x-rst","patch_set":19,"id":"fa81d914_b2833d03","line":527,"updated":"2015-01-29 00:52:30.000000000","message":"the space before ``list_roles`` was lost.","commit_id":"d5a66cf2879ecaa59cded29cb0c1f02072ee6834"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"91464a058fcff446d373a8b4e67e7837bd8ab4cf","unresolved":false,"context_lines":[{"line_number":524,"context_line":"            caching specifically on ``resource``, in the ``[resource]`` section"},{"line_number":525,"context_line":"            of the configuration set ``caching`` to ``False``."},{"line_number":526,"context_line":"    * ``role``"},{"line_number":527,"context_line":"        Currently ``role`` has caching for ``get_role``, but not for``list_roles``."},{"line_number":528,"context_line":"        The role system has a separate ``cache_time`` configuration option,"},{"line_number":529,"context_line":"        that can be set to a value above or below the global ``expiration_time``"},{"line_number":530,"context_line":"        default, allowing for different caching behavior from the other systems in"}],"source_content_type":"text/x-rst","patch_set":19,"id":"fa81d914_159bf767","line":527,"in_reply_to":"fa81d914_b2833d03","updated":"2015-01-29 14:46:08.000000000","message":"Done","commit_id":"d5a66cf2879ecaa59cded29cb0c1f02072ee6834"}],"etc/keystone.conf.sample":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"70f1e61f9a5e105cef0a77e82379d8766a14bd84","unresolved":false,"context_lines":[{"line_number":1264,"context_line":"# From keystone"},{"line_number":1265,"context_line":"#"},{"line_number":1266,"context_line":""},{"line_number":1267,"context_line":"# Resource backend driver. (string value)"},{"line_number":1268,"context_line":"#driver \u003d \u003cNone\u003e"},{"line_number":1269,"context_line":""},{"line_number":1270,"context_line":"# Toggle for resource caching. This has no effect unless global caching is"}],"source_content_type":"application/octet-stream","patch_set":16,"id":"1a930d6b_4b02c1b4","line":1267,"updated":"2015-01-27 16:16:57.000000000","message":"The help text should say what driver is used if none is provided.","commit_id":"746a18f82b1642fb4924a353af2c7be77bb02a0d"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"e7442f663b2cb887473f3d42ff3c6893e1811250","unresolved":false,"context_lines":[{"line_number":1264,"context_line":"# From keystone"},{"line_number":1265,"context_line":"#"},{"line_number":1266,"context_line":""},{"line_number":1267,"context_line":"# Resource backend driver. (string value)"},{"line_number":1268,"context_line":"#driver \u003d \u003cNone\u003e"},{"line_number":1269,"context_line":""},{"line_number":1270,"context_line":"# Toggle for resource caching. This has no effect unless global caching is"}],"source_content_type":"application/octet-stream","patch_set":16,"id":"1a930d6b_b95a96ef","line":1267,"in_reply_to":"1a930d6b_4b02c1b4","updated":"2015-01-27 18:44:37.000000000","message":"Done","commit_id":"746a18f82b1642fb4924a353af2c7be77bb02a0d"}],"keystone/assignment/backends/ldap.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"70f1e61f9a5e105cef0a77e82379d8766a14bd84","unresolved":false,"context_lines":[{"line_number":287,"context_line":""},{"line_number":288,"context_line":"# TODO(termie): turn this into a data object and move logic to driver"},{"line_number":289,"context_line":"# NOTE(heny-nash): The ProjectLdapStructureMixin class enables the sharing of"},{"line_number":290,"context_line":"# the LDAP structure between here and the resource backend LDAP, no methods are"},{"line_number":291,"context_line":"# shared."},{"line_number":292,"context_line":"class ProjectApi(ldap_resource.ProjectLdapStructureMixin,"},{"line_number":293,"context_line":"                 common_ldap.EnabledEmuMixIn, common_ldap.BaseLdap):"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a930d6b_0bcd1966","line":290,"updated":"2015-01-27 16:16:57.000000000","message":"change \"resource backend LDAP\" to \"resource LDAP backend\"\n\nIf things need to be shared then move it into the common.ldap module. That\u0027s what common.ldap is for.","commit_id":"746a18f82b1642fb4924a353af2c7be77bb02a0d"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"e7442f663b2cb887473f3d42ff3c6893e1811250","unresolved":false,"context_lines":[{"line_number":287,"context_line":""},{"line_number":288,"context_line":"# TODO(termie): turn this into a data object and move logic to driver"},{"line_number":289,"context_line":"# NOTE(heny-nash): The ProjectLdapStructureMixin class enables the sharing of"},{"line_number":290,"context_line":"# the LDAP structure between here and the resource backend LDAP, no methods are"},{"line_number":291,"context_line":"# shared."},{"line_number":292,"context_line":"class ProjectApi(ldap_resource.ProjectLdapStructureMixin,"},{"line_number":293,"context_line":"                 common_ldap.EnabledEmuMixIn, common_ldap.BaseLdap):"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a930d6b_39994679","line":290,"in_reply_to":"1a930d6b_0bcd1966","updated":"2015-01-27 18:44:37.000000000","message":"Done on the first bit...\n\n...wasn\u0027t sure if common.ldap.module was appropriate since this isn\u0027t really common - just shared between two specific entities....do you still think it should be in common?","commit_id":"746a18f82b1642fb4924a353af2c7be77bb02a0d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"bcbb8b084abaa22a2d4bb291561f5c7171106191","unresolved":false,"context_lines":[{"line_number":287,"context_line":""},{"line_number":288,"context_line":"# TODO(termie): turn this into a data object and move logic to driver"},{"line_number":289,"context_line":"# NOTE(heny-nash): The ProjectLdapStructureMixin class enables the sharing of"},{"line_number":290,"context_line":"# the LDAP structure between here and the resource backend LDAP, no methods are"},{"line_number":291,"context_line":"# shared."},{"line_number":292,"context_line":"class ProjectApi(ldap_resource.ProjectLdapStructureMixin,"},{"line_number":293,"context_line":"                 common_ldap.EnabledEmuMixIn, common_ldap.BaseLdap):"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa81d914_d061d4d4","line":290,"in_reply_to":"1a930d6b_39994679","updated":"2015-01-27 19:09:32.000000000","message":"I think it should be in common. It\u0027s shared between two entities but there\u0027s no logical reason for it to be in one module or the other (the only reason is historical, which I\u0027d rather forget). Putting it into common will make it easier to make changes in the future since we\u0027ll have fewer links between these 2 modules and so don\u0027t have to worry about circular dependencies.","commit_id":"746a18f82b1642fb4924a353af2c7be77bb02a0d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"70f1e61f9a5e105cef0a77e82379d8766a14bd84","unresolved":false,"context_lines":[{"line_number":288,"context_line":"# TODO(termie): turn this into a data object and move logic to driver"},{"line_number":289,"context_line":"# NOTE(heny-nash): The ProjectLdapStructureMixin class enables the sharing of"},{"line_number":290,"context_line":"# the LDAP structure between here and the resource backend LDAP, no methods are"},{"line_number":291,"context_line":"# shared."},{"line_number":292,"context_line":"class ProjectApi(ldap_resource.ProjectLdapStructureMixin,"},{"line_number":293,"context_line":"                 common_ldap.EnabledEmuMixIn, common_ldap.BaseLdap):"},{"line_number":294,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"1a930d6b_ab1885d3","line":291,"updated":"2015-01-27 16:16:57.000000000","message":"what does \"no methods are shared\" mean?","commit_id":"746a18f82b1642fb4924a353af2c7be77bb02a0d"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"e7442f663b2cb887473f3d42ff3c6893e1811250","unresolved":false,"context_lines":[{"line_number":288,"context_line":"# TODO(termie): turn this into a data object and move logic to driver"},{"line_number":289,"context_line":"# NOTE(heny-nash): The ProjectLdapStructureMixin class enables the sharing of"},{"line_number":290,"context_line":"# the LDAP structure between here and the resource backend LDAP, no methods are"},{"line_number":291,"context_line":"# shared."},{"line_number":292,"context_line":"class ProjectApi(ldap_resource.ProjectLdapStructureMixin,"},{"line_number":293,"context_line":"                 common_ldap.EnabledEmuMixIn, common_ldap.BaseLdap):"},{"line_number":294,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"1a930d6b_d9220251","line":291,"in_reply_to":"1a930d6b_ab1885d3","updated":"2015-01-27 18:44:37.000000000","message":"I\u0027ll remove that bit :-)","commit_id":"746a18f82b1642fb4924a353af2c7be77bb02a0d"}],"keystone/assignment/core.py":[{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"fa4bdf41d1cef484d63abb2ece84c3469566f50c","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        # If there is no explicit assignment driver specified, we let the"},{"line_number":104,"context_line":"        # resource driver tell us what to use. This is for backward"},{"line_number":105,"context_line":"        # compatibility reasons from the time when identity, resource and"},{"line_number":106,"context_line":"        # assignment were all part of identity."},{"line_number":107,"context_line":"        if assignment_driver is None:"},{"line_number":108,"context_line":"            resource_driver \u003d dependency.REGISTRY[\u0027resource_api\u0027].driver"},{"line_number":109,"context_line":"            assignment_driver \u003d resource_driver.default_assignment_driver()"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a961159_3f5f5de6","line":106,"updated":"2015-01-09 03:47:07.000000000","message":"why not: \u0027when identity, resource, role and assignment\u0027 ? (adding role backend as well)","commit_id":"fe2fc5d736293524441c7afcf219d4eaeb5242ec"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"556833c494cac8a28738cd0cbaf9b487e8d7247b","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        # If there is no explicit assignment driver specified, we let the"},{"line_number":104,"context_line":"        # resource driver tell us what to use. This is for backward"},{"line_number":105,"context_line":"        # compatibility reasons from the time when identity, resource and"},{"line_number":106,"context_line":"        # assignment were all part of identity."},{"line_number":107,"context_line":"        if assignment_driver is None:"},{"line_number":108,"context_line":"            resource_driver \u003d dependency.REGISTRY[\u0027resource_api\u0027].driver"},{"line_number":109,"context_line":"            assignment_driver \u003d resource_driver.default_assignment_driver()"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a961159_fe74a938","line":106,"in_reply_to":"3a961159_3f5f5de6","updated":"2015-01-13 04:35:50.000000000","message":"well yes, although I don\u0027t think that is relevant in this particular section (since assignment driver doesn\u0027t depend on role driver)","commit_id":"fe2fc5d736293524441c7afcf219d4eaeb5242ec"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"841e83e89b849962359970823708d75bb6fb20f2","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        # If there is no explicit assignment driver specified, we let the"},{"line_number":104,"context_line":"        # resource driver tell us what to use. This is for backward"},{"line_number":105,"context_line":"        # compatibility reasons from the time when identity, resource and"},{"line_number":106,"context_line":"        # assignment were all part of identity."},{"line_number":107,"context_line":"        if assignment_driver is None:"},{"line_number":108,"context_line":"            resource_driver \u003d dependency.REGISTRY[\u0027resource_api\u0027].driver"},{"line_number":109,"context_line":"            assignment_driver \u003d resource_driver.default_assignment_driver()"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a961159_590a2d7a","line":106,"in_reply_to":"3a961159_fe74a938","updated":"2015-01-13 11:45:13.000000000","message":"Agreed","commit_id":"fe2fc5d736293524441c7afcf219d4eaeb5242ec"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"70f1e61f9a5e105cef0a77e82379d8766a14bd84","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        assignment_driver \u003d CONF.assignment.driver"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        # If there is no explicit assignment driver specified, we let the"},{"line_number":95,"context_line":"        # resource driver tell us what to use. This is for backward"},{"line_number":96,"context_line":"        # compatibility reasons from the time when identity, resource and"},{"line_number":97,"context_line":"        # assignment were all part of identity."},{"line_number":98,"context_line":"        if assignment_driver is None:"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a930d6b_ab508532","line":95,"updated":"2015-01-27 16:16:57.000000000","message":"For backwards compatibility the assignment driver should continue to use the identity driver\u0027s configuration.","commit_id":"746a18f82b1642fb4924a353af2c7be77bb02a0d"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"e7442f663b2cb887473f3d42ff3c6893e1811250","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        assignment_driver \u003d CONF.assignment.driver"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        # If there is no explicit assignment driver specified, we let the"},{"line_number":95,"context_line":"        # resource driver tell us what to use. This is for backward"},{"line_number":96,"context_line":"        # compatibility reasons from the time when identity, resource and"},{"line_number":97,"context_line":"        # assignment were all part of identity."},{"line_number":98,"context_line":"        if assignment_driver is None:"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a930d6b_79182ed3","line":95,"in_reply_to":"1a930d6b_ab508532","updated":"2015-01-27 18:44:37.000000000","message":"Done","commit_id":"746a18f82b1642fb4924a353af2c7be77bb02a0d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a631607af41da19e59b7778293e2664d58b6ba01","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"CONF \u003d config.CONF"},{"line_number":35,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":36,"context_line":"SHOULD_CACHE \u003d cache.should_cache_fn(\u0027role\u0027)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"# NOTE(blk-u): The config option is not available at import time."},{"line_number":39,"context_line":"EXPIRATION_TIME \u003d lambda: CONF.role.cache_time"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa81d914_8dea9a0d","line":36,"updated":"2015-01-29 01:07:52.000000000","message":"Why is this changing? There\u0027s already a role section in the config file... so suddenly the RoleManager caching is switching from the assignment section to the role section... doesn\u0027t this need to be backwards compatible? There\u0027s no mention of this change in the commit message.","commit_id":"d5a66cf2879ecaa59cded29cb0c1f02072ee6834"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"91464a058fcff446d373a8b4e67e7837bd8ab4cf","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"CONF \u003d config.CONF"},{"line_number":35,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":36,"context_line":"SHOULD_CACHE \u003d cache.should_cache_fn(\u0027role\u0027)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"# NOTE(blk-u): The config option is not available at import time."},{"line_number":39,"context_line":"EXPIRATION_TIME \u003d lambda: CONF.role.cache_time"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa81d914_955607d1","line":36,"in_reply_to":"fa81d914_88c8c823","updated":"2015-01-29 14:46:08.000000000","message":"So yes, I agree that in a previous patch I should have had two sets of SHOULD_CACHE \u0026 EXPIRATION_TIMES - one for projects/domains and one for roles. I\u0027d suggest it isn\u0027t worth fixing that ahead of this patch.","commit_id":"d5a66cf2879ecaa59cded29cb0c1f02072ee6834"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"c23073b722c91a3097dd33ff99a12dcf476b4415","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"CONF \u003d config.CONF"},{"line_number":35,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":36,"context_line":"SHOULD_CACHE \u003d cache.should_cache_fn(\u0027role\u0027)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"# NOTE(blk-u): The config option is not available at import time."},{"line_number":39,"context_line":"EXPIRATION_TIME \u003d lambda: CONF.role.cache_time"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa81d914_88c8c823","line":36,"in_reply_to":"fa81d914_8dea9a0d","updated":"2015-01-29 01:47:28.000000000","message":"After removing projects and domains to their backend, the only entity on this file that will need to be cached is Role at RoleManager.\n\nThen it needs to be role here after that.\n\nHowever, the fact of RoleManager be currently using the cache and expiration time from assignment is a bug, since it has its own section in the config file, as you have pointed out.","commit_id":"d5a66cf2879ecaa59cded29cb0c1f02072ee6834"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2904b82e71e1eb06e90c51bb8a4f469a7fb61620","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"CONF \u003d config.CONF"},{"line_number":35,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":36,"context_line":"SHOULD_CACHE \u003d cache.should_cache_fn(\u0027role\u0027)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"# NOTE(blk-u): The config option is not available at import time."},{"line_number":39,"context_line":"EXPIRATION_TIME \u003d lambda: CONF.role.cache_time"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa81d914_3811d2ac","line":36,"in_reply_to":"fa81d914_955607d1","updated":"2015-01-29 15:00:52.000000000","message":"It is worth fixing problems in previous commits in a separate commit rather than mixing it in with other unrelated changes. There\u0027s no reason this change should be as difficult to understand as it is. Also, this fix isn\u0027t mentioned in the commit message.","commit_id":"d5a66cf2879ecaa59cded29cb0c1f02072ee6834"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d0150849d1178623e1d6165587531d064dccb784","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        self.resource_api.get_project(tenant_id)"},{"line_number":112,"context_line":"        return self.driver.list_user_ids_for_project(tenant_id)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    def _list_parent_ids_of_project(self, project_id):"},{"line_number":115,"context_line":"        if CONF.os_inherit.enabled:"},{"line_number":116,"context_line":"            return [x[\u0027id\u0027] for x in ("},{"line_number":117,"context_line":"                self.resource_api.list_project_parents(project_id))]"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa81d914_cd273263","line":114,"updated":"2015-01-29 01:28:50.000000000","message":"this method should be moved into resource_api since it only calls methods on resource_api. This change could be done in a separate commit.","commit_id":"d5a66cf2879ecaa59cded29cb0c1f02072ee6834"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"91464a058fcff446d373a8b4e67e7837bd8ab4cf","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        self.resource_api.get_project(tenant_id)"},{"line_number":112,"context_line":"        return self.driver.list_user_ids_for_project(tenant_id)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    def _list_parent_ids_of_project(self, project_id):"},{"line_number":115,"context_line":"        if CONF.os_inherit.enabled:"},{"line_number":116,"context_line":"            return [x[\u0027id\u0027] for x in ("},{"line_number":117,"context_line":"                self.resource_api.list_project_parents(project_id))]"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa81d914_355d5bea","line":114,"in_reply_to":"fa81d914_cd273263","updated":"2015-01-29 14:46:08.000000000","message":"So we could do that - although this is an internal method that is only used in this file by two assignment methods (below)...so not sure it is worth it.","commit_id":"d5a66cf2879ecaa59cded29cb0c1f02072ee6834"}],"keystone/backends.py":[{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"fa4bdf41d1cef484d63abb2ece84c3469566f50c","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    # Ensure that the identity driver is created before the resource manager."},{"line_number":33,"context_line":"    # and that the resource driver is created before the assignment manager."},{"line_number":34,"context_line":"    # The default drivers of assignment depends on resource, which in turn"},{"line_number":35,"context_line":"    # depends on identity - hence we need to ensure the chain is available."},{"line_number":36,"context_line":"    _IDENTITY_API \u003d identity.Manager()"},{"line_number":37,"context_line":"    _RESOURCE_API \u003d resource.Manager()"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a961159_9f0f71df","line":34,"updated":"2015-01-09 03:47:07.000000000","message":"s/drivers/driver","commit_id":"fe2fc5d736293524441c7afcf219d4eaeb5242ec"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"556833c494cac8a28738cd0cbaf9b487e8d7247b","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    # Ensure that the identity driver is created before the resource manager."},{"line_number":33,"context_line":"    # and that the resource driver is created before the assignment manager."},{"line_number":34,"context_line":"    # The default drivers of assignment depends on resource, which in turn"},{"line_number":35,"context_line":"    # depends on identity - hence we need to ensure the chain is available."},{"line_number":36,"context_line":"    _IDENTITY_API \u003d identity.Manager()"},{"line_number":37,"context_line":"    _RESOURCE_API \u003d resource.Manager()"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a961159_1e741535","line":34,"in_reply_to":"3a961159_9f0f71df","updated":"2015-01-13 04:35:50.000000000","message":"Done","commit_id":"fe2fc5d736293524441c7afcf219d4eaeb5242ec"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"70f1e61f9a5e105cef0a77e82379d8766a14bd84","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    # Ensure that the identity driver is created before the resource manager."},{"line_number":33,"context_line":"    # and that the resource driver is created before the assignment manager."},{"line_number":34,"context_line":"    # The default driver of assignment depends on resource, which in turn"},{"line_number":35,"context_line":"    # depends on identity - hence we need to ensure the chain is available."},{"line_number":36,"context_line":"    _IDENTITY_API \u003d identity.Manager()"},{"line_number":37,"context_line":"    _RESOURCE_API \u003d resource.Manager()"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a930d6b_668a5465","line":34,"updated":"2015-01-27 16:16:57.000000000","message":"change \"driver of assignment\" to \"assignment driver\"","commit_id":"746a18f82b1642fb4924a353af2c7be77bb02a0d"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"e7442f663b2cb887473f3d42ff3c6893e1811250","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    # Ensure that the identity driver is created before the resource manager."},{"line_number":33,"context_line":"    # and that the resource driver is created before the assignment manager."},{"line_number":34,"context_line":"    # The default driver of assignment depends on resource, which in turn"},{"line_number":35,"context_line":"    # depends on identity - hence we need to ensure the chain is available."},{"line_number":36,"context_line":"    _IDENTITY_API \u003d identity.Manager()"},{"line_number":37,"context_line":"    _RESOURCE_API \u003d resource.Manager()"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a930d6b_d96f6229","line":34,"in_reply_to":"1a930d6b_668a5465","updated":"2015-01-27 18:44:37.000000000","message":"Done","commit_id":"746a18f82b1642fb4924a353af2c7be77bb02a0d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d0150849d1178623e1d6165587531d064dccb784","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    # Configure and build the cache"},{"line_number":30,"context_line":"    cache.configure_cache_region(cache.REGION)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    # Ensure that the identity driver is created before the assignment manager."},{"line_number":33,"context_line":"    # and that the assignment driver is created before the resource manager."},{"line_number":34,"context_line":"    # The default resource driver depends on assignment, which in turn"},{"line_number":35,"context_line":"    # depends on identity - hence we need to ensure the chain is available."}],"source_content_type":"text/x-python","patch_set":19,"id":"fa81d914_ad991e21","line":32,"updated":"2015-01-29 01:28:50.000000000","message":"remove the .","commit_id":"d5a66cf2879ecaa59cded29cb0c1f02072ee6834"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"91464a058fcff446d373a8b4e67e7837bd8ab4cf","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    # Configure and build the cache"},{"line_number":30,"context_line":"    cache.configure_cache_region(cache.REGION)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    # Ensure that the identity driver is created before the assignment manager."},{"line_number":33,"context_line":"    # and that the assignment driver is created before the resource manager."},{"line_number":34,"context_line":"    # The default resource driver depends on assignment, which in turn"},{"line_number":35,"context_line":"    # depends on identity - hence we need to ensure the chain is available."}],"source_content_type":"text/x-python","patch_set":19,"id":"fa81d914_15b697fa","line":32,"in_reply_to":"fa81d914_ad991e21","updated":"2015-01-29 14:46:08.000000000","message":"Done","commit_id":"d5a66cf2879ecaa59cded29cb0c1f02072ee6834"}],"keystone/common/config.py":[{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"fa4bdf41d1cef484d63abb2ece84c3469566f50c","unresolved":false,"context_lines":[{"line_number":444,"context_line":"        cfg.BoolOpt(\u0027caching\u0027, default\u003dTrue,"},{"line_number":445,"context_line":"                    deprecated_opts\u003d[cfg.DeprecatedOpt(\u0027caching\u0027,"},{"line_number":446,"context_line":"                                                       group\u003d\u0027assignment\u0027)],"},{"line_number":447,"context_line":"                    help\u003d\u0027Toggle for resource. This has no effect \u0027"},{"line_number":448,"context_line":"                         \u0027unless global caching is enabled.\u0027),"},{"line_number":449,"context_line":"        cfg.IntOpt(\u0027cache_time\u0027,"},{"line_number":450,"context_line":"                   deprecated_opts\u003d[cfg.DeprecatedOpt(\u0027cache_time\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a961159_bf950d41","line":447,"updated":"2015-01-09 03:47:07.000000000","message":"Toggle for resource *caching*?","commit_id":"fe2fc5d736293524441c7afcf219d4eaeb5242ec"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"556833c494cac8a28738cd0cbaf9b487e8d7247b","unresolved":false,"context_lines":[{"line_number":444,"context_line":"        cfg.BoolOpt(\u0027caching\u0027, default\u003dTrue,"},{"line_number":445,"context_line":"                    deprecated_opts\u003d[cfg.DeprecatedOpt(\u0027caching\u0027,"},{"line_number":446,"context_line":"                                                       group\u003d\u0027assignment\u0027)],"},{"line_number":447,"context_line":"                    help\u003d\u0027Toggle for resource. This has no effect \u0027"},{"line_number":448,"context_line":"                         \u0027unless global caching is enabled.\u0027),"},{"line_number":449,"context_line":"        cfg.IntOpt(\u0027cache_time\u0027,"},{"line_number":450,"context_line":"                   deprecated_opts\u003d[cfg.DeprecatedOpt(\u0027cache_time\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a961159_3ea631ac","line":447,"in_reply_to":"3a961159_bf950d41","updated":"2015-01-13 04:35:50.000000000","message":"Done","commit_id":"fe2fc5d736293524441c7afcf219d4eaeb5242ec"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"70f1e61f9a5e105cef0a77e82379d8766a14bd84","unresolved":false,"context_lines":[{"line_number":437,"context_line":"    ],"},{"line_number":438,"context_line":"    \u0027resource\u0027: ["},{"line_number":439,"context_line":"        # The resource driver has no default for backward compatibility"},{"line_number":440,"context_line":"        # reasons. If resource driver is not specified, the identity driver"},{"line_number":441,"context_line":"        # chooses the backend."},{"line_number":442,"context_line":"        cfg.StrOpt(\u0027driver\u0027,"},{"line_number":443,"context_line":"                   help\u003d\u0027Resource backend driver.\u0027),"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a930d6b_06751063","line":440,"updated":"2015-01-27 16:16:57.000000000","message":"since the resource driver was split out from the assignment driver, the resource driver should get its driver from assignment, not identity.","commit_id":"746a18f82b1642fb4924a353af2c7be77bb02a0d"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"e7442f663b2cb887473f3d42ff3c6893e1811250","unresolved":false,"context_lines":[{"line_number":437,"context_line":"    ],"},{"line_number":438,"context_line":"    \u0027resource\u0027: ["},{"line_number":439,"context_line":"        # The resource driver has no default for backward compatibility"},{"line_number":440,"context_line":"        # reasons. If resource driver is not specified, the identity driver"},{"line_number":441,"context_line":"        # chooses the backend."},{"line_number":442,"context_line":"        cfg.StrOpt(\u0027driver\u0027,"},{"line_number":443,"context_line":"                   help\u003d\u0027Resource backend driver.\u0027),"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a930d6b_56bfc160","line":440,"in_reply_to":"1a930d6b_06751063","updated":"2015-01-27 18:44:37.000000000","message":"Although it seems more logical for the chain to be identity-\u003eresource-\u003eassignment due to domains/projects being the main first class entities that were split from identity, I think you are correct that in practice the more common case is that someone is upgrading from the situation when there is BOTH an identity and assignment driver specified, but (since it is new), they have not specified a resource driver.  So, as you say, it is better that resource takes its lead from assignment.  Good catch.","commit_id":"746a18f82b1642fb4924a353af2c7be77bb02a0d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"70f1e61f9a5e105cef0a77e82379d8766a14bd84","unresolved":false,"context_lines":[{"line_number":455,"context_line":"                   deprecated_opts\u003d[cfg.DeprecatedOpt(\u0027list_limit\u0027,"},{"line_number":456,"context_line":"                                                      group\u003d\u0027assignment\u0027)],"},{"line_number":457,"context_line":"                   help\u003d\u0027Maximum number of entities that will be returned \u0027"},{"line_number":458,"context_line":"                        \u0027in an resource collection.\u0027),"},{"line_number":459,"context_line":"    ],"},{"line_number":460,"context_line":"    \u0027role\u0027: ["},{"line_number":461,"context_line":"        # The role driver has no default for backward compatibility reasons."}],"source_content_type":"text/x-python","patch_set":16,"id":"1a930d6b_a60b5cd4","line":458,"updated":"2015-01-27 16:16:57.000000000","message":"change \"an\" to \"a\"","commit_id":"746a18f82b1642fb4924a353af2c7be77bb02a0d"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"e7442f663b2cb887473f3d42ff3c6893e1811250","unresolved":false,"context_lines":[{"line_number":455,"context_line":"                   deprecated_opts\u003d[cfg.DeprecatedOpt(\u0027list_limit\u0027,"},{"line_number":456,"context_line":"                                                      group\u003d\u0027assignment\u0027)],"},{"line_number":457,"context_line":"                   help\u003d\u0027Maximum number of entities that will be returned \u0027"},{"line_number":458,"context_line":"                        \u0027in an resource collection.\u0027),"},{"line_number":459,"context_line":"    ],"},{"line_number":460,"context_line":"    \u0027role\u0027: ["},{"line_number":461,"context_line":"        # The role driver has no default for backward compatibility reasons."}],"source_content_type":"text/x-python","patch_set":16,"id":"1a930d6b_76959d31","line":458,"in_reply_to":"1a930d6b_a60b5cd4","updated":"2015-01-27 18:44:37.000000000","message":"Done","commit_id":"746a18f82b1642fb4924a353af2c7be77bb02a0d"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"529d37c1239cae258b6770f4a8261112534f9b0d","unresolved":false,"context_lines":[{"line_number":446,"context_line":"        # chooses the backend."},{"line_number":447,"context_line":"        cfg.StrOpt(\u0027driver\u0027,"},{"line_number":448,"context_line":"                   help\u003d\u0027Resource backend driver. If a resource driver is \u0027"},{"line_number":449,"context_line":"                        \u0027not specified, the assignment driver will chose \u0027"},{"line_number":450,"context_line":"                        \u0027the backend.\u0027),"},{"line_number":451,"context_line":"        cfg.BoolOpt(\u0027caching\u0027, default\u003dTrue,"},{"line_number":452,"context_line":"                    deprecated_opts\u003d[cfg.DeprecatedOpt(\u0027caching\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa81d914_eca50305","line":449,"updated":"2015-01-28 11:22:11.000000000","message":"(nit) choose instead of chose","commit_id":"da9a0a7603c638613b190b487be303cfb42f43bb"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"ed96a30254bae57eaea25405df9e9173a1e54e99","unresolved":false,"context_lines":[{"line_number":446,"context_line":"        # chooses the backend."},{"line_number":447,"context_line":"        cfg.StrOpt(\u0027driver\u0027,"},{"line_number":448,"context_line":"                   help\u003d\u0027Resource backend driver. If a resource driver is \u0027"},{"line_number":449,"context_line":"                        \u0027not specified, the assignment driver will chose \u0027"},{"line_number":450,"context_line":"                        \u0027the backend.\u0027),"},{"line_number":451,"context_line":"        cfg.BoolOpt(\u0027caching\u0027, default\u003dTrue,"},{"line_number":452,"context_line":"                    deprecated_opts\u003d[cfg.DeprecatedOpt(\u0027caching\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa81d914_e65d17eb","line":449,"in_reply_to":"fa81d914_eca50305","updated":"2015-01-28 15:14:29.000000000","message":"Done","commit_id":"da9a0a7603c638613b190b487be303cfb42f43bb"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d0150849d1178623e1d6165587531d064dccb784","unresolved":false,"context_lines":[{"line_number":443,"context_line":"    \u0027resource\u0027: ["},{"line_number":444,"context_line":"        # The resource driver has no default for backward compatibility"},{"line_number":445,"context_line":"        # reasons. If resource driver is not specified, the assignment driver"},{"line_number":446,"context_line":"        # chooses the backend."},{"line_number":447,"context_line":"        cfg.StrOpt(\u0027driver\u0027,"},{"line_number":448,"context_line":"                   help\u003d\u0027Resource backend driver. If a resource driver is \u0027"},{"line_number":449,"context_line":"                        \u0027not specified, the assignment driver will choose \u0027"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa81d914_0db14a8f","line":446,"updated":"2015-01-29 01:28:50.000000000","message":"don\u0027t need this comment since the help text says it all.","commit_id":"d5a66cf2879ecaa59cded29cb0c1f02072ee6834"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"91464a058fcff446d373a8b4e67e7837bd8ab4cf","unresolved":false,"context_lines":[{"line_number":443,"context_line":"    \u0027resource\u0027: ["},{"line_number":444,"context_line":"        # The resource driver has no default for backward compatibility"},{"line_number":445,"context_line":"        # reasons. If resource driver is not specified, the assignment driver"},{"line_number":446,"context_line":"        # chooses the backend."},{"line_number":447,"context_line":"        cfg.StrOpt(\u0027driver\u0027,"},{"line_number":448,"context_line":"                   help\u003d\u0027Resource backend driver. If a resource driver is \u0027"},{"line_number":449,"context_line":"                        \u0027not specified, the assignment driver will choose \u0027"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa81d914_f5a583b5","line":446,"in_reply_to":"fa81d914_0db14a8f","updated":"2015-01-29 14:46:08.000000000","message":"Done","commit_id":"d5a66cf2879ecaa59cded29cb0c1f02072ee6834"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d0150849d1178623e1d6165587531d064dccb784","unresolved":false,"context_lines":[{"line_number":447,"context_line":"        cfg.StrOpt(\u0027driver\u0027,"},{"line_number":448,"context_line":"                   help\u003d\u0027Resource backend driver. If a resource driver is \u0027"},{"line_number":449,"context_line":"                        \u0027not specified, the assignment driver will choose \u0027"},{"line_number":450,"context_line":"                        \u0027the backend.\u0027),"},{"line_number":451,"context_line":"        cfg.BoolOpt(\u0027caching\u0027, default\u003dTrue,"},{"line_number":452,"context_line":"                    deprecated_opts\u003d[cfg.DeprecatedOpt(\u0027caching\u0027,"},{"line_number":453,"context_line":"                                                       group\u003d\u0027assignment\u0027)],"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa81d914_cd6e5201","line":450,"updated":"2015-01-29 01:28:50.000000000","message":"change \"backend\" to \"resource driver\". otherwise it\u0027s confusing since the same thing is referred to in two ways.","commit_id":"d5a66cf2879ecaa59cded29cb0c1f02072ee6834"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"91464a058fcff446d373a8b4e67e7837bd8ab4cf","unresolved":false,"context_lines":[{"line_number":447,"context_line":"        cfg.StrOpt(\u0027driver\u0027,"},{"line_number":448,"context_line":"                   help\u003d\u0027Resource backend driver. If a resource driver is \u0027"},{"line_number":449,"context_line":"                        \u0027not specified, the assignment driver will choose \u0027"},{"line_number":450,"context_line":"                        \u0027the backend.\u0027),"},{"line_number":451,"context_line":"        cfg.BoolOpt(\u0027caching\u0027, default\u003dTrue,"},{"line_number":452,"context_line":"                    deprecated_opts\u003d[cfg.DeprecatedOpt(\u0027caching\u0027,"},{"line_number":453,"context_line":"                                                       group\u003d\u0027assignment\u0027)],"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa81d914_75919351","line":450,"in_reply_to":"fa81d914_cd6e5201","updated":"2015-01-29 14:46:08.000000000","message":"Done","commit_id":"d5a66cf2879ecaa59cded29cb0c1f02072ee6834"}],"keystone/common/ldap/core.py":[{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"529d37c1239cae258b6770f4a8261112534f9b0d","unresolved":false,"context_lines":[{"line_number":1806,"context_line":"        super(EnabledEmuMixIn, self).delete(object_id)"},{"line_number":1807,"context_line":""},{"line_number":1808,"context_line":""},{"line_number":1809,"context_line":"class ProjectLdapStructureMixin(object):"},{"line_number":1810,"context_line":"    \"\"\"Project LDAP Structure shared between LDAP backends."},{"line_number":1811,"context_line":""},{"line_number":1812,"context_line":"    This is shared between the resource and assignment LDAP backends."}],"source_content_type":"text/x-python","patch_set":18,"id":"fa81d914_2c72bb7c","line":1809,"updated":"2015-01-28 11:22:11.000000000","message":"(nit) I am not sure we need to call it Mixin here.\nWould like to get other people views on it.","commit_id":"da9a0a7603c638613b190b487be303cfb42f43bb"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"ed96a30254bae57eaea25405df9e9173a1e54e99","unresolved":false,"context_lines":[{"line_number":1806,"context_line":"        super(EnabledEmuMixIn, self).delete(object_id)"},{"line_number":1807,"context_line":""},{"line_number":1808,"context_line":""},{"line_number":1809,"context_line":"class ProjectLdapStructureMixin(object):"},{"line_number":1810,"context_line":"    \"\"\"Project LDAP Structure shared between LDAP backends."},{"line_number":1811,"context_line":""},{"line_number":1812,"context_line":"    This is shared between the resource and assignment LDAP backends."}],"source_content_type":"text/x-python","patch_set":18,"id":"fa81d914_26cbaf73","line":1809,"in_reply_to":"fa81d914_2c72bb7c","updated":"2015-01-28 15:14:29.000000000","message":"So I\u0027m not sure of the guidelines here, but it seemed to me that this is clearly a \"helper\" class, that adds additional info into the classes that inherit from it","commit_id":"da9a0a7603c638613b190b487be303cfb42f43bb"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"529d37c1239cae258b6770f4a8261112534f9b0d","unresolved":false,"context_lines":[{"line_number":1817,"context_line":"    DEFAULT_OBJECTCLASS \u003d \u0027groupOfNames\u0027"},{"line_number":1818,"context_line":"    DEFAULT_ID_ATTR \u003d \u0027cn\u0027"},{"line_number":1819,"context_line":"    NotFound \u003d exception.ProjectNotFound"},{"line_number":1820,"context_line":"    notfound_arg \u003d \u0027project_id\u0027  # NOTE(yorik-sar): while options_name \u003d tenant"},{"line_number":1821,"context_line":"    options_name \u003d \u0027project\u0027"},{"line_number":1822,"context_line":"    attribute_options_names \u003d {\u0027name\u0027: \u0027name\u0027,"},{"line_number":1823,"context_line":"                               \u0027description\u0027: \u0027desc\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa81d914_ecdd0344","line":1820,"updated":"2015-01-28 11:22:11.000000000","message":"(nit) Looks like this comment is no more valid, look at next line. This should be raised as a separate bug.","commit_id":"da9a0a7603c638613b190b487be303cfb42f43bb"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"ed96a30254bae57eaea25405df9e9173a1e54e99","unresolved":false,"context_lines":[{"line_number":1817,"context_line":"    DEFAULT_OBJECTCLASS \u003d \u0027groupOfNames\u0027"},{"line_number":1818,"context_line":"    DEFAULT_ID_ATTR \u003d \u0027cn\u0027"},{"line_number":1819,"context_line":"    NotFound \u003d exception.ProjectNotFound"},{"line_number":1820,"context_line":"    notfound_arg \u003d \u0027project_id\u0027  # NOTE(yorik-sar): while options_name \u003d tenant"},{"line_number":1821,"context_line":"    options_name \u003d \u0027project\u0027"},{"line_number":1822,"context_line":"    attribute_options_names \u003d {\u0027name\u0027: \u0027name\u0027,"},{"line_number":1823,"context_line":"                               \u0027description\u0027: \u0027desc\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa81d914_06206b48","line":1820,"in_reply_to":"fa81d914_ecdd0344","updated":"2015-01-28 15:14:29.000000000","message":"I\u0027ll raise a separate bug","commit_id":"da9a0a7603c638613b190b487be303cfb42f43bb"}],"keystone/resource/backends/ldap.py":[{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"fa4bdf41d1cef484d63abb2ece84c3469566f50c","unresolved":false,"context_lines":[{"line_number":8,"context_line":"# distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":9,"context_line":"# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":10,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"# under the License."},{"line_number":12,"context_line":"from __future__ import absolute_import"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"import uuid"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a961159_3f275db7","line":11,"updated":"2015-01-09 03:47:07.000000000","message":"I think we need a blank line between copyright info and first import.","commit_id":"fe2fc5d736293524441c7afcf219d4eaeb5242ec"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"556833c494cac8a28738cd0cbaf9b487e8d7247b","unresolved":false,"context_lines":[{"line_number":8,"context_line":"# distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":9,"context_line":"# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":10,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"# under the License."},{"line_number":12,"context_line":"from __future__ import absolute_import"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"import uuid"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a961159_beff8165","line":11,"in_reply_to":"3a961159_3f275db7","updated":"2015-01-13 04:35:50.000000000","message":"Done","commit_id":"fe2fc5d736293524441c7afcf219d4eaeb5242ec"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"70f1e61f9a5e105cef0a77e82379d8766a14bd84","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        self.suffix \u003d CONF.ldap.suffix"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        # This is the only deep dependency from resource back"},{"line_number":42,"context_line":"        # to identity.  The assumption is that if you are using"},{"line_number":43,"context_line":"        # LDAP for resource, you are using it for identity as well."},{"line_number":44,"context_line":"        self.user \u003d ldap_identity.UserApi(CONF)"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"1a930d6b_26e5ac08","line":42,"updated":"2015-01-27 16:16:57.000000000","message":"rather than make an assumption we should make it a requirement.","commit_id":"746a18f82b1642fb4924a353af2c7be77bb02a0d"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"e7442f663b2cb887473f3d42ff3c6893e1811250","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        self.suffix \u003d CONF.ldap.suffix"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        # This is the only deep dependency from resource back"},{"line_number":42,"context_line":"        # to identity.  The assumption is that if you are using"},{"line_number":43,"context_line":"        # LDAP for resource, you are using it for identity as well."},{"line_number":44,"context_line":"        self.user \u003d ldap_identity.UserApi(CONF)"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"1a930d6b_54fdf9af","line":42,"in_reply_to":"1a930d6b_26e5ac08","updated":"2015-01-27 18:44:37.000000000","message":"so this text was copied from the old assignment, which is why I did not change it. I\u0027d be happy to come back in with a separate patch to clean this up (and make it clearer in the configuration.rst as well)","commit_id":"746a18f82b1642fb4924a353af2c7be77bb02a0d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"bcbb8b084abaa22a2d4bb291561f5c7171106191","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        self.suffix \u003d CONF.ldap.suffix"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        # This is the only deep dependency from resource back"},{"line_number":42,"context_line":"        # to identity.  The assumption is that if you are using"},{"line_number":43,"context_line":"        # LDAP for resource, you are using it for identity as well."},{"line_number":44,"context_line":"        self.user \u003d ldap_identity.UserApi(CONF)"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"fa81d914_b0d9c085","line":42,"in_reply_to":"1a930d6b_54fdf9af","updated":"2015-01-27 19:09:32.000000000","message":"I\u0027m fine with this being a separate bug.","commit_id":"746a18f82b1642fb4924a353af2c7be77bb02a0d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"70f1e61f9a5e105cef0a77e82379d8766a14bd84","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        self.project \u003d ProjectApi(CONF)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def default_assignment_driver(self):"},{"line_number":49,"context_line":"        return \"keystone.assignment.backends.ldap.Assignment\""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def _set_default_parent_project(self, ref):"},{"line_number":52,"context_line":"        \"\"\"If the parent project ID has not been set, set it to None.\"\"\""}],"source_content_type":"text/x-python","patch_set":16,"id":"1a930d6b_e6b644f8","line":49,"updated":"2015-01-27 16:16:57.000000000","message":"prefer \u0027 for strings.","commit_id":"746a18f82b1642fb4924a353af2c7be77bb02a0d"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"e7442f663b2cb887473f3d42ff3c6893e1811250","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        self.project \u003d ProjectApi(CONF)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def default_assignment_driver(self):"},{"line_number":49,"context_line":"        return \"keystone.assignment.backends.ldap.Assignment\""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def _set_default_parent_project(self, ref):"},{"line_number":52,"context_line":"        \"\"\"If the parent project ID has not been set, set it to None.\"\"\""}],"source_content_type":"text/x-python","patch_set":16,"id":"1a930d6b_d4280935","line":49,"in_reply_to":"1a930d6b_e6b644f8","updated":"2015-01-27 18:44:37.000000000","message":"Done","commit_id":"746a18f82b1642fb4924a353af2c7be77bb02a0d"}],"keystone/resource/backends/sql.py":[{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"fa4bdf41d1cef484d63abb2ece84c3469566f50c","unresolved":false,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    # CRUD"},{"line_number":139,"context_line":"    @sql.handle_conflicts(conflict_type\u003d\u0027project\u0027)"},{"line_number":140,"context_line":"    @sql.handle_conflicts(conflict_type\u003d\u0027project\u0027)"},{"line_number":141,"context_line":"    def create_project(self, tenant_id, tenant):"},{"line_number":142,"context_line":"        tenant[\u0027name\u0027] \u003d clean.project_name(tenant[\u0027name\u0027])"},{"line_number":143,"context_line":"        with sql.transaction() as session:"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a961159_dfaad9d0","line":140,"updated":"2015-01-09 03:47:07.000000000","message":"Duplicated line.","commit_id":"fe2fc5d736293524441c7afcf219d4eaeb5242ec"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"556833c494cac8a28738cd0cbaf9b487e8d7247b","unresolved":false,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    # CRUD"},{"line_number":139,"context_line":"    @sql.handle_conflicts(conflict_type\u003d\u0027project\u0027)"},{"line_number":140,"context_line":"    @sql.handle_conflicts(conflict_type\u003d\u0027project\u0027)"},{"line_number":141,"context_line":"    def create_project(self, tenant_id, tenant):"},{"line_number":142,"context_line":"        tenant[\u0027name\u0027] \u003d clean.project_name(tenant[\u0027name\u0027])"},{"line_number":143,"context_line":"        with sql.transaction() as session:"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a961159_3eeb91a5","line":140,"in_reply_to":"3a961159_dfaad9d0","updated":"2015-01-13 04:35:50.000000000","message":"oops, thanks!","commit_id":"fe2fc5d736293524441c7afcf219d4eaeb5242ec"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"fa4bdf41d1cef484d63abb2ece84c3469566f50c","unresolved":false,"context_lines":[{"line_number":226,"context_line":"                    setattr(ref, attr, getattr(new_domain, attr))"},{"line_number":227,"context_line":"            ref.extra \u003d new_domain.extra"},{"line_number":228,"context_line":"            return ref.to_dict()"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def delete_domain(self, domain_id):"},{"line_number":231,"context_line":"        with sql.transaction() as session:"},{"line_number":232,"context_line":"            ref \u003d self._get_domain(session, domain_id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a961159_ff8cf581","line":229,"updated":"2015-01-09 03:47:07.000000000","message":"Doesn\u0027t it need a @sql.handle_conflicts(conflict_type\u003d\u0027domain\u0027) annotation?\nAs we have for delete_project at line 165. At least they should be consistent.","commit_id":"fe2fc5d736293524441c7afcf219d4eaeb5242ec"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"841e83e89b849962359970823708d75bb6fb20f2","unresolved":false,"context_lines":[{"line_number":226,"context_line":"                    setattr(ref, attr, getattr(new_domain, attr))"},{"line_number":227,"context_line":"            ref.extra \u003d new_domain.extra"},{"line_number":228,"context_line":"            return ref.to_dict()"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def delete_domain(self, domain_id):"},{"line_number":231,"context_line":"        with sql.transaction() as session:"},{"line_number":232,"context_line":"            ref \u003d self._get_domain(session, domain_id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a961159_19ec2592","line":229,"in_reply_to":"3a961159_5ec5bd08","updated":"2015-01-13 11:45:13.000000000","message":"++","commit_id":"fe2fc5d736293524441c7afcf219d4eaeb5242ec"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"556833c494cac8a28738cd0cbaf9b487e8d7247b","unresolved":false,"context_lines":[{"line_number":226,"context_line":"                    setattr(ref, attr, getattr(new_domain, attr))"},{"line_number":227,"context_line":"            ref.extra \u003d new_domain.extra"},{"line_number":228,"context_line":"            return ref.to_dict()"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def delete_domain(self, domain_id):"},{"line_number":231,"context_line":"        with sql.transaction() as session:"},{"line_number":232,"context_line":"            ref \u003d self._get_domain(session, domain_id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a961159_5ec5bd08","line":229,"in_reply_to":"3a961159_ff8cf581","updated":"2015-01-13 04:35:50.000000000","message":"...so the old code in assignment/backends/sql.py (from where this was moved) did not have this.  I don\u0027t think handle_conflicts does anything for delete (it only checks for duplicates or a db_error)...so in fact this should be removed for projects too..I\u0027ll raise a separate bug for that.","commit_id":"fe2fc5d736293524441c7afcf219d4eaeb5242ec"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"fbfa82ff1f5593ef103136a941e31b93bfd524bd","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"# not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"# a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a930d6b_ab7b538a","line":1,"updated":"2015-01-26 17:19:25.000000000","message":"Note to other reviews to Diff the result of this portion of the patch file with\n\n\ngit checkout HEAD~1  keystone/assignment/backends/sql.py","commit_id":"746a18f82b1642fb4924a353af2c7be77bb02a0d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"70f1e61f9a5e105cef0a77e82379d8766a14bd84","unresolved":false,"context_lines":[{"line_number":26,"context_line":"class Resource(keystone_resource.Driver):"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def default_assignment_driver(self):"},{"line_number":29,"context_line":"        return \"keystone.assignment.backends.sql.Assignment\""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def _get_project(self, session, project_id):"},{"line_number":32,"context_line":"        project_ref \u003d session.query(Project).get(project_id)"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a930d6b_66709440","line":29,"updated":"2015-01-27 16:16:57.000000000","message":"prefer \u0027 for strings.","commit_id":"746a18f82b1642fb4924a353af2c7be77bb02a0d"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"e7442f663b2cb887473f3d42ff3c6893e1811250","unresolved":false,"context_lines":[{"line_number":26,"context_line":"class Resource(keystone_resource.Driver):"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def default_assignment_driver(self):"},{"line_number":29,"context_line":"        return \"keystone.assignment.backends.sql.Assignment\""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def _get_project(self, session, project_id):"},{"line_number":32,"context_line":"        project_ref \u003d session.query(Project).get(project_id)"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa81d914_ca4a0355","line":29,"in_reply_to":"1a930d6b_66709440","updated":"2015-01-27 18:44:37.000000000","message":"Done","commit_id":"746a18f82b1642fb4924a353af2c7be77bb02a0d"}],"keystone/resource/core.py":[{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"fbfa82ff1f5593ef103136a941e31b93bfd524bd","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from keystone.common import manager"},{"line_number":24,"context_line":"from keystone import config"},{"line_number":25,"context_line":"from keystone import exception"},{"line_number":26,"context_line":"from keystone.i18n import _, _LE"},{"line_number":27,"context_line":"from keystone import notifications"},{"line_number":28,"context_line":"from keystone.openstack.common import log"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"1a930d6b_254a3426","line":26,"updated":"2015-01-26 17:19:25.000000000","message":"Note to other reviewers to check this file this way:\n\ngit checkout HEAD~1  keystone/assignment/core.py\ndiff --unified keystone/assignment/core.py keystone/resource/core.py | less","commit_id":"746a18f82b1642fb4924a353af2c7be77bb02a0d"}],"keystone/tests/test_backend.py":[{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"21c90026b5e6e1d9a597ba50c698cbca277950b3","unresolved":false,"context_lines":[{"line_number":5463,"context_line":"    def test_list_groups_filtered_and_limited(self):"},{"line_number":5464,"context_line":"        self._test_list_entity_filtered_and_limited(\u0027group\u0027)"},{"line_number":5465,"context_line":""},{"line_number":5466,"context_line":"    def test_list_projects_filtered_and_limited(self):"},{"line_number":5467,"context_line":"        self._test_list_entity_filtered_and_limited(\u0027project\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"1a930d6b_1fd8bcee","line":5466,"updated":"2015-01-21 14:19:52.000000000","message":"Not related to this patch, but don\u0027t we need a test_list_domains_filtered_and_limited as well?\nIf so, line 5440 should be modified and the test added.","commit_id":"0a10f2e1383d50ea4f558a1bbe6426d695d279ff"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"4f9e6d94f3e012d9b595deecec91c6be413eb946","unresolved":false,"context_lines":[{"line_number":5463,"context_line":"    def test_list_groups_filtered_and_limited(self):"},{"line_number":5464,"context_line":"        self._test_list_entity_filtered_and_limited(\u0027group\u0027)"},{"line_number":5465,"context_line":""},{"line_number":5466,"context_line":"    def test_list_projects_filtered_and_limited(self):"},{"line_number":5467,"context_line":"        self._test_list_entity_filtered_and_limited(\u0027project\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"1a930d6b_abe76ae3","line":5466,"in_reply_to":"1a930d6b_1fd8bcee","updated":"2015-01-21 15:47:44.000000000","message":"well, we can\u0027t do that (easily) with domains here since the LDAP manager needs a pretty complex setup for that.  We should probably do that in test_backend_ldap.  I\u0027ll raise a bug for that.","commit_id":"0a10f2e1383d50ea4f558a1bbe6426d695d279ff"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"6d8442f4f4c6670bf2db67ff85b558d2a10b76c1","unresolved":false,"context_lines":[{"line_number":5463,"context_line":"    def test_list_groups_filtered_and_limited(self):"},{"line_number":5464,"context_line":"        self._test_list_entity_filtered_and_limited(\u0027group\u0027)"},{"line_number":5465,"context_line":""},{"line_number":5466,"context_line":"    def test_list_projects_filtered_and_limited(self):"},{"line_number":5467,"context_line":"        self._test_list_entity_filtered_and_limited(\u0027project\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"1a930d6b_fe35a946","line":5466,"in_reply_to":"1a930d6b_abe76ae3","updated":"2015-01-21 17:33:20.000000000","message":"Great! Thanks","commit_id":"0a10f2e1383d50ea4f558a1bbe6426d695d279ff"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"542cd0ca863459eebc9fa7297458acbf1fec84f3","unresolved":false,"context_lines":[{"line_number":3071,"context_line":"        user_projects \u003d self.assignment_api.list_projects_for_user(user1[\u0027id\u0027])"},{"line_number":3072,"context_line":"        self.assertEqual(3, len(user_projects))"},{"line_number":3073,"context_line":""},{"line_number":3074,"context_line":"    @tests.skip_if_cache_disabled(\u0027resource\u0027)"},{"line_number":3075,"context_line":"    @tests.skip_if_no_multiple_domains_support"},{"line_number":3076,"context_line":"    def test_domain_rename_invalidates_get_domain_by_name_cache(self):"},{"line_number":3077,"context_line":"        domain \u003d {\u0027id\u0027: uuid.uuid4().hex, \u0027name\u0027: uuid.uuid4().hex,"}],"source_content_type":"text/x-python","patch_set":22,"id":"fa81d914_1c14fbf3","line":3074,"updated":"2015-01-29 16:51:04.000000000","message":"good!","commit_id":"0e05353d0984bb03eaa14557e6a9bdf173dbde69"}],"keystone/tests/test_backend_sql.py":[{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"fa4bdf41d1cef484d63abb2ece84c3469566f50c","unresolved":false,"context_lines":[{"line_number":812,"context_line":"                          role_ref[\u0027id\u0027], role_ref)"},{"line_number":813,"context_line":""},{"line_number":814,"context_line":"    def test_assignment_to_resource_api(self):"},{"line_number":815,"context_line":"        \"\"\"Test that calling one of the methods does call LOG.depreated."},{"line_number":816,"context_line":""},{"line_number":817,"context_line":"        This method is really generic to the type of backend, but we need"},{"line_number":818,"context_line":"        one to execute the test, so the SQL backend is as good as any."}],"source_content_type":"text/x-python","patch_set":11,"id":"3a961159_3f2cbd01","line":815,"updated":"2015-01-09 03:47:07.000000000","message":"s/LOG.depreated/LOG.deprecated","commit_id":"fe2fc5d736293524441c7afcf219d4eaeb5242ec"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"556833c494cac8a28738cd0cbaf9b487e8d7247b","unresolved":false,"context_lines":[{"line_number":812,"context_line":"                          role_ref[\u0027id\u0027], role_ref)"},{"line_number":813,"context_line":""},{"line_number":814,"context_line":"    def test_assignment_to_resource_api(self):"},{"line_number":815,"context_line":"        \"\"\"Test that calling one of the methods does call LOG.depreated."},{"line_number":816,"context_line":""},{"line_number":817,"context_line":"        This method is really generic to the type of backend, but we need"},{"line_number":818,"context_line":"        one to execute the test, so the SQL backend is as good as any."}],"source_content_type":"text/x-python","patch_set":11,"id":"3a961159_bea06143","line":815,"in_reply_to":"3a961159_3f2cbd01","updated":"2015-01-13 04:35:50.000000000","message":"Done","commit_id":"fe2fc5d736293524441c7afcf219d4eaeb5242ec"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"d516985cbecef798f0f7267b44bfba88c95ff6b8","unresolved":false,"context_lines":[{"line_number":839,"context_line":"                          self.assignment_api.create_role,"},{"line_number":840,"context_line":"                          role_ref[\u0027id\u0027], role_ref)"},{"line_number":841,"context_line":""},{"line_number":842,"context_line":"    def test_assignment_to_resource_api(self):"},{"line_number":843,"context_line":"        \"\"\"Test that calling one of the methods does call LOG.deprecated."},{"line_number":844,"context_line":""},{"line_number":845,"context_line":"        This method is really generic to the type of backend, but we need"}],"source_content_type":"text/x-python","patch_set":22,"id":"fa81d914_a4b49b35","line":842,"updated":"2015-01-30 05:50:52.000000000","message":"nice","commit_id":"0e05353d0984bb03eaa14557e6a9bdf173dbde69"}],"keystone/tests/test_v3_filters.py":[{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"21c90026b5e6e1d9a597ba50c698cbca277950b3","unresolved":false,"context_lines":[{"line_number":400,"context_line":"        self._test_entity_list_limit(\u0027group\u0027, \u0027identity\u0027)"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"    def test_projects_list_limit(self):"},{"line_number":403,"context_line":"        self._test_entity_list_limit(\u0027project\u0027, \u0027resource\u0027)"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"    def test_services_list_limit(self):"},{"line_number":406,"context_line":"        self._test_entity_list_limit(\u0027service\u0027, \u0027catalog\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"1a930d6b_9f7e6ce3","line":403,"updated":"2015-01-21 14:19:52.000000000","message":"Not related to this patch, but don\u0027t we need a test_domains_list_limit as well?","commit_id":"0a10f2e1383d50ea4f558a1bbe6426d695d279ff"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"4f9e6d94f3e012d9b595deecec91c6be413eb946","unresolved":false,"context_lines":[{"line_number":400,"context_line":"        self._test_entity_list_limit(\u0027group\u0027, \u0027identity\u0027)"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"    def test_projects_list_limit(self):"},{"line_number":403,"context_line":"        self._test_entity_list_limit(\u0027project\u0027, \u0027resource\u0027)"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"    def test_services_list_limit(self):"},{"line_number":406,"context_line":"        self._test_entity_list_limit(\u0027service\u0027, \u0027catalog\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"1a930d6b_0f740998","line":403,"in_reply_to":"1a930d6b_9f7e6ce3","updated":"2015-01-21 15:47:44.000000000","message":"so my response to your other comment....","commit_id":"0a10f2e1383d50ea4f558a1bbe6426d695d279ff"}]}
