)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"95a94ec3a4c3962630fffee8cc9c149cb7435a2a","unresolved":false,"context_lines":[{"line_number":32,"context_line":"- The task of generating IDs for User and Groups has not yet"},{"line_number":33,"context_line":"  been moved from controller to manager, so in the case when"},{"line_number":34,"context_line":"  a RW LDAP is being used with hashing generated IDs, the IDs"},{"line_number":35,"context_line":"  for Keystone created entities will still be UUID based"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Blueprint: multi-backend-uuids"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":28,"id":"1ae5cdf2_0cc811a7","line":35,"updated":"2014-06-11 15:12:15.000000000","message":"We should try and address this in Juno (before shipping everything)","commit_id":"befaba09d523c08cf7fcb02eb6897f8d05ed6905"}],"doc/source/configuration.rst":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"95a94ec3a4c3962630fffee8cc9c149cb7435a2a","unresolved":false,"context_lines":[{"line_number":128,"context_line":""},{"line_number":129,"context_line":"Keystone does not support moving the contents of a domain (i.e. it\u0027s users and"},{"line_number":130,"context_line":"groups) from one backend to another, nor group membership across backend"},{"line_number":131,"context_line":"boundaries."},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"Due to the need for user and group IDs to be unique across an OpenStack"},{"line_number":134,"context_line":"installation and for Keystone to be able to deduce which domain and backend to"}],"source_content_type":"text/x-rst","patch_set":28,"id":"1ae5cdf2_acb8fd11","line":131,"updated":"2014-06-11 15:12:15.000000000","message":"(NIT) Above paragraph should be either a .. NOTE:: or a .. WARNING:: imo","commit_id":"befaba09d523c08cf7fcb02eb6897f8d05ed6905"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"95a94ec3a4c3962630fffee8cc9c149cb7435a2a","unresolved":false,"context_lines":[{"line_number":140,"context_line":"option:"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":" [identity_mapping]"},{"line_number":143,"context_line":" public_id_generator \u003d sha1"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"Using a sha1 hash will ensure that if the public ID needs to be regenerated"},{"line_number":146,"context_line":"then the same public ID will be created.  This is useful if you are running"}],"source_content_type":"text/x-rst","patch_set":28,"id":"1ae5cdf2_0ca9f18f","line":143,"updated":"2014-06-11 15:12:15.000000000","message":"We should document the default behavior if this isn\u0027t the default. (shoulnd\u0027t sha1 be the default?)","commit_id":"befaba09d523c08cf7fcb02eb6897f8d05ed6905"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"f3c9df41dfe865fa55c488d863b0e41c3d7a658f","unresolved":false,"context_lines":[{"line_number":153,"context_line":"LDAP), Keystone will not know if entities have been deleted and hence will"},{"line_number":154,"context_line":"continue to carry stale identity mappings in its table.  While benign, keystone"},{"line_number":155,"context_line":"provides an ability for operators to purge the mapping table of such stale"},{"line_number":156,"context_line":"entries using the keystone-manage command, for example:"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    $ keystone-manage mapping_purge --domain-name DOMAINA --local-id abc@de.com"},{"line_number":159,"context_line":""}],"source_content_type":"text/x-rst","patch_set":28,"id":"1ae5cdf2_fedd6743","line":156,"updated":"2014-06-11 14:32:13.000000000","message":"How does the operator get the local ID out of their read-only LDAP?","commit_id":"befaba09d523c08cf7fcb02eb6897f8d05ed6905"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"4d18d7a3649729274054801f4ef6c6117769106c","unresolved":false,"context_lines":[{"line_number":153,"context_line":"LDAP), Keystone will not know if entities have been deleted and hence will"},{"line_number":154,"context_line":"continue to carry stale identity mappings in its table.  While benign, keystone"},{"line_number":155,"context_line":"provides an ability for operators to purge the mapping table of such stale"},{"line_number":156,"context_line":"entries using the keystone-manage command, for example:"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    $ keystone-manage mapping_purge --domain-name DOMAINA --local-id abc@de.com"},{"line_number":159,"context_line":""}],"source_content_type":"text/x-rst","patch_set":28,"id":"1ae5cdf2_71d96ef2","line":156,"in_reply_to":"1ae5cdf2_fedd6743","updated":"2014-06-11 14:51:57.000000000","message":"It will be in whatever attribute they have specified in the keystone config","commit_id":"befaba09d523c08cf7fcb02eb6897f8d05ed6905"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"95a94ec3a4c3962630fffee8cc9c149cb7435a2a","unresolved":false,"context_lines":[{"line_number":166,"context_line":"If sha1 is being used as a mapping ID generator, which by definition means that"},{"line_number":167,"context_line":"public IDs are regeneratable, then if the details of those entries that have"},{"line_number":168,"context_line":"been deleted are not available, then it is safe to simply bulk purge"},{"line_number":169,"context_line":"identity mappings periodically, for example:"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    $ keystone-manage mapping_purge --domain-name DOMAINA"},{"line_number":172,"context_line":""}],"source_content_type":"text/x-rst","patch_set":28,"id":"1ae5cdf2_ec3765fd","line":169,"updated":"2014-06-11 15:12:15.000000000","message":"If users use the mapped ID to login, this will break that login method.","commit_id":"befaba09d523c08cf7fcb02eb6897f8d05ed6905"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"95a94ec3a4c3962630fffee8cc9c149cb7435a2a","unresolved":false,"context_lines":[{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    $ keystone-manage mapping_purge --all"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"**Note** It is normally *only* safe to bulk purge mappings if you are using the"},{"line_number":179,"context_line":"sha1 hashing option, since with the default uuid generator when a purged user"},{"line_number":180,"context_line":"re-authenticates to Keystone again they will be given a new public ID, which"},{"line_number":181,"context_line":"will be different from their old ID. This would invalidate any assignments they"}],"source_content_type":"text/x-rst","patch_set":28,"id":"1ae5cdf2_cc19c989","line":178,"updated":"2014-06-11 15:12:15.000000000","message":"Suggest removing \"normally\"","commit_id":"befaba09d523c08cf7fcb02eb6897f8d05ed6905"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"b00784c2494a8dd53120a800016afccfb7636c8c","unresolved":false,"context_lines":[{"line_number":111,"context_line":"    This feature is experimental and unsupported in Havana \u0026 Icehouse (with"},{"line_number":112,"context_line":"    several known issues that will not be fixed). Feedback welcome for"},{"line_number":113,"context_line":"    Juno!"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"Keystone supports the option (disabled by default) to specify identity driver"},{"line_number":116,"context_line":"configurations on a domain by domain basis, allowing, for example, a specific"},{"line_number":117,"context_line":"domain to have its own LDAP or SQL server. This is configured by specifying the"}],"source_content_type":"text/x-rst","patch_set":40,"id":"baada198_6ddd3670","side":"PARENT","line":114,"updated":"2014-07-10 20:08:45.000000000","message":"replace this with a .. NOTE:: that this is new for Juno","commit_id":"b4140ae951d809b27de27d2b6f370ba32cf418b1"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"ee7c56cdca292ac308e186f1d87d4d102dfc30ab","unresolved":false,"context_lines":[{"line_number":128,"context_line":""},{"line_number":129,"context_line":".. NOTE::"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    Keystone does not support moving the contents of a domain (i.e. it\u0027s users"},{"line_number":132,"context_line":"    and groups) from one backend to another, nor group membership across"},{"line_number":133,"context_line":"    backend boundaries."},{"line_number":134,"context_line":""}],"source_content_type":"text/x-rst","patch_set":40,"id":"baada198_38b22c4c","line":131,"updated":"2014-07-10 19:14:18.000000000","message":"change \"it\u0027s\" to \"its\"","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"b00784c2494a8dd53120a800016afccfb7636c8c","unresolved":false,"context_lines":[{"line_number":128,"context_line":""},{"line_number":129,"context_line":".. NOTE::"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    Keystone does not support moving the contents of a domain (i.e. it\u0027s users"},{"line_number":132,"context_line":"    and groups) from one backend to another, nor group membership across"},{"line_number":133,"context_line":"    backend boundaries."},{"line_number":134,"context_line":""}],"source_content_type":"text/x-rst","patch_set":40,"id":"baada198_edd06655","line":131,"in_reply_to":"baada198_38b22c4c","updated":"2014-07-10 20:08:45.000000000","message":"what the grammar parser said","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"f588ef56c87a5dda4cc00169896903ce205f553e","unresolved":false,"context_lines":[{"line_number":128,"context_line":""},{"line_number":129,"context_line":".. NOTE::"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    Keystone does not support moving the contents of a domain (i.e. it\u0027s users"},{"line_number":132,"context_line":"    and groups) from one backend to another, nor group membership across"},{"line_number":133,"context_line":"    backend boundaries."},{"line_number":134,"context_line":""}],"source_content_type":"text/x-rst","patch_set":40,"id":"baada198_6d77f6d4","line":131,"in_reply_to":"baada198_edd06655","updated":"2014-07-10 21:09:06.000000000","message":"Done","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"b00784c2494a8dd53120a800016afccfb7636c8c","unresolved":false,"context_lines":[{"line_number":140,"context_line":"when it first encounters the entity.  If the local ID of the entity is from"},{"line_number":141,"context_line":"a backend that does not guarantee to generate UUIDs, a hash algorithm will"},{"line_number":142,"context_line":"generate a public ID for that entity, which is what will be exposed by"},{"line_number":143,"context_line":"Keystone."},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"The use of a hash will ensure that if the public ID needs to be regenerated"},{"line_number":146,"context_line":"then the same public ID will be created.  This is useful if you are running"}],"source_content_type":"text/x-rst","patch_set":40,"id":"baada198_cdb9e216","line":143,"updated":"2014-07-10 20:08:45.000000000","message":"something about commas -ayoung","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"b00784c2494a8dd53120a800016afccfb7636c8c","unresolved":false,"context_lines":[{"line_number":163,"context_line":"local-id.  The type of the entity (i.e. user or group) may also be specified"},{"line_number":164,"context_line":"if this is needed to uniquely identify the mapping."},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"Since public IDs are regeneratable, if the details of those entries that have"},{"line_number":167,"context_line":"been deleted are not available, then it is safe to simply bulk purge"},{"line_number":168,"context_line":"identity mappings periodically, for example:"},{"line_number":169,"context_line":""}],"source_content_type":"text/x-rst","patch_set":40,"id":"baada198_6d4b762b","line":166,"updated":"2014-07-10 20:08:45.000000000","message":"may be regereratubule **with the correct generator implementation**, then","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"f588ef56c87a5dda4cc00169896903ce205f553e","unresolved":false,"context_lines":[{"line_number":163,"context_line":"local-id.  The type of the entity (i.e. user or group) may also be specified"},{"line_number":164,"context_line":"if this is needed to uniquely identify the mapping."},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"Since public IDs are regeneratable, if the details of those entries that have"},{"line_number":167,"context_line":"been deleted are not available, then it is safe to simply bulk purge"},{"line_number":168,"context_line":"identity mappings periodically, for example:"},{"line_number":169,"context_line":""}],"source_content_type":"text/x-rst","patch_set":40,"id":"baada198_6db0d68b","line":166,"in_reply_to":"baada198_6d4b762b","updated":"2014-07-10 21:09:06.000000000","message":"Done","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"b00784c2494a8dd53120a800016afccfb7636c8c","unresolved":false,"context_lines":[{"line_number":192,"context_line":"* ``generator`` - identity mapping generator. Defaults to"},{"line_number":193,"context_line":"  ``keystone.identity.generators.sha256.Generator``"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":".. NOTE::"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    Changing the generator may cause all existing public IDs to be become"},{"line_number":198,"context_line":"    invalid, so typically the generator selection should be considered"}],"source_content_type":"text/x-rst","patch_set":40,"id":"baada198_2d597efe","line":195,"updated":"2014-07-10 20:08:45.000000000","message":"WARNING","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"f588ef56c87a5dda4cc00169896903ce205f553e","unresolved":false,"context_lines":[{"line_number":192,"context_line":"* ``generator`` - identity mapping generator. Defaults to"},{"line_number":193,"context_line":"  ``keystone.identity.generators.sha256.Generator``"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":".. NOTE::"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    Changing the generator may cause all existing public IDs to be become"},{"line_number":198,"context_line":"    invalid, so typically the generator selection should be considered"}],"source_content_type":"text/x-rst","patch_set":40,"id":"baada198_ade58ea9","line":195,"in_reply_to":"baada198_2d597efe","updated":"2014-07-10 21:09:06.000000000","message":"Done","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"}],"doc/source/developing.rst":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"3d229d3c8b9790a8d152d6187bb7fb18dbd18de9","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"Keystone supports the option of having domain-specific backends for the"},{"line_number":167,"context_line":"identity driver (i.e. for user and group storage), allowing, for example,"},{"line_number":168,"context_line":"a different LDAP server for each domain. To ensure that keystone can determine"},{"line_number":169,"context_line":"to which backend it should route an API call, starting with IceHouse, the"},{"line_number":170,"context_line":"identity Manager will, provided domain-specifc backends are enabled, on-the-fly"},{"line_number":171,"context_line":"a persistent mapping table between keystone Public IDs that are presented to"}],"source_content_type":"text/x-rst","patch_set":23,"id":"1ae5cdf2_7130c99e","line":168,"updated":"2014-06-02 14:19:28.000000000","message":"Keystone*","commit_id":"17250f6ff30d8095dafce967e9f08b235883f645"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"8e8a7512405c3974538dbb64fc09b3420ca63fec","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"Keystone supports the option of having domain-specific backends for the"},{"line_number":167,"context_line":"identity driver (i.e. for user and group storage), allowing, for example,"},{"line_number":168,"context_line":"a different LDAP server for each domain. To ensure that keystone can determine"},{"line_number":169,"context_line":"to which backend it should route an API call, starting with IceHouse, the"},{"line_number":170,"context_line":"identity Manager will, provided domain-specifc backends are enabled, on-the-fly"},{"line_number":171,"context_line":"a persistent mapping table between keystone Public IDs that are presented to"}],"source_content_type":"text/x-rst","patch_set":23,"id":"1ae5cdf2_1de22fd5","line":168,"in_reply_to":"1ae5cdf2_7130c99e","updated":"2014-06-03 05:25:04.000000000","message":"Done","commit_id":"17250f6ff30d8095dafce967e9f08b235883f645"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"3d229d3c8b9790a8d152d6187bb7fb18dbd18de9","unresolved":false,"context_lines":[{"line_number":168,"context_line":"a different LDAP server for each domain. To ensure that keystone can determine"},{"line_number":169,"context_line":"to which backend it should route an API call, starting with IceHouse, the"},{"line_number":170,"context_line":"identity Manager will, provided domain-specifc backends are enabled, on-the-fly"},{"line_number":171,"context_line":"a persistent mapping table between keystone Public IDs that are presented to"},{"line_number":172,"context_line":"the controller and the domain that holds the entity, along with whatever local"},{"line_number":173,"context_line":"ID is understood by the driver.  This hides, for instance, the LDAP specifics"},{"line_number":174,"context_line":"of whatever ID is being used."}],"source_content_type":"text/x-rst","patch_set":23,"id":"1ae5cdf2_b12a512a","line":171,"updated":"2014-06-02 14:19:28.000000000","message":"Keystone*","commit_id":"17250f6ff30d8095dafce967e9f08b235883f645"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"8e8a7512405c3974538dbb64fc09b3420ca63fec","unresolved":false,"context_lines":[{"line_number":168,"context_line":"a different LDAP server for each domain. To ensure that keystone can determine"},{"line_number":169,"context_line":"to which backend it should route an API call, starting with IceHouse, the"},{"line_number":170,"context_line":"identity Manager will, provided domain-specifc backends are enabled, on-the-fly"},{"line_number":171,"context_line":"a persistent mapping table between keystone Public IDs that are presented to"},{"line_number":172,"context_line":"the controller and the domain that holds the entity, along with whatever local"},{"line_number":173,"context_line":"ID is understood by the driver.  This hides, for instance, the LDAP specifics"},{"line_number":174,"context_line":"of whatever ID is being used."}],"source_content_type":"text/x-rst","patch_set":23,"id":"1ae5cdf2_5decb7c7","line":171,"in_reply_to":"1ae5cdf2_b12a512a","updated":"2014-06-03 05:25:04.000000000","message":"Done","commit_id":"17250f6ff30d8095dafce967e9f08b235883f645"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"3d229d3c8b9790a8d152d6187bb7fb18dbd18de9","unresolved":false,"context_lines":[{"line_number":176,"context_line":"To ensure backward compatibility, the default configuration of either a"},{"line_number":177,"context_line":"single SQL or LDAP backends for Identity will not use the mapping table,"},{"line_number":178,"context_line":"meaning that the public facing IDs will be the unchanged. If keeping these IDs"},{"line_number":179,"context_line":"the same for the default LDAP backend is not required, then setting the "},{"line_number":180,"context_line":"configuration variable ``backward_compatible_ids`` to ``True`` will enable"},{"line_number":181,"context_line":"the mapping for the default LDAP driver, hence hiding the LDAP specifics of the"},{"line_number":182,"context_line":"IDs being used."}],"source_content_type":"text/x-rst","patch_set":23,"id":"1ae5cdf2_b113310c","line":179,"updated":"2014-06-02 14:19:28.000000000","message":"remove trailing whitespace.","commit_id":"17250f6ff30d8095dafce967e9f08b235883f645"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"8e8a7512405c3974538dbb64fc09b3420ca63fec","unresolved":false,"context_lines":[{"line_number":176,"context_line":"To ensure backward compatibility, the default configuration of either a"},{"line_number":177,"context_line":"single SQL or LDAP backends for Identity will not use the mapping table,"},{"line_number":178,"context_line":"meaning that the public facing IDs will be the unchanged. If keeping these IDs"},{"line_number":179,"context_line":"the same for the default LDAP backend is not required, then setting the "},{"line_number":180,"context_line":"configuration variable ``backward_compatible_ids`` to ``True`` will enable"},{"line_number":181,"context_line":"the mapping for the default LDAP driver, hence hiding the LDAP specifics of the"},{"line_number":182,"context_line":"IDs being used."}],"source_content_type":"text/x-rst","patch_set":23,"id":"1ae5cdf2_7dd25301","line":179,"in_reply_to":"1ae5cdf2_b113310c","updated":"2014-06-03 05:25:04.000000000","message":"Done","commit_id":"17250f6ff30d8095dafce967e9f08b235883f645"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"f3c9df41dfe865fa55c488d863b0e41c3d7a658f","unresolved":false,"context_lines":[{"line_number":166,"context_line":"Keystone supports the option of having domain-specific backends for the"},{"line_number":167,"context_line":"identity driver (i.e. for user and group storage), allowing, for example,"},{"line_number":168,"context_line":"a different LDAP server for each domain. To ensure that Keystone can determine"},{"line_number":169,"context_line":"to which backend it should route an API call, starting with IceHouse, the"},{"line_number":170,"context_line":"identity Manager will, provided domain-specifc backends are enabled, on-the-fly"},{"line_number":171,"context_line":"a persistent mapping table between Keystone Public IDs that are presented to"},{"line_number":172,"context_line":"the controller and the domain that holds the entity, along with whatever local"}],"source_content_type":"text/x-rst","patch_set":28,"id":"1ae5cdf2_9ec38356","line":169,"updated":"2014-06-11 14:32:13.000000000","message":"Is Icehouse still true?","commit_id":"befaba09d523c08cf7fcb02eb6897f8d05ed6905"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"dfe15c2617fe2929d271e731ece212c10f2faefc","unresolved":false,"context_lines":[{"line_number":166,"context_line":"Keystone supports the option of having domain-specific backends for the"},{"line_number":167,"context_line":"identity driver (i.e. for user and group storage), allowing, for example,"},{"line_number":168,"context_line":"a different LDAP server for each domain. To ensure that Keystone can determine"},{"line_number":169,"context_line":"to which backend it should route an API call, starting with IceHouse, the"},{"line_number":170,"context_line":"identity Manager will, provided domain-specifc backends are enabled, on-the-fly"},{"line_number":171,"context_line":"a persistent mapping table between Keystone Public IDs that are presented to"},{"line_number":172,"context_line":"the controller and the domain that holds the entity, along with whatever local"}],"source_content_type":"text/x-rst","patch_set":28,"id":"1ae5cdf2_d12c0205","line":169,"in_reply_to":"1ae5cdf2_9ec38356","updated":"2014-06-11 14:35:46.000000000","message":"This is in-fact true in Icehouse.","commit_id":"befaba09d523c08cf7fcb02eb6897f8d05ed6905"}],"etc/keystone.conf.sample":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"8ee443030e3c8514f5892dfc99ce2887a25ea071","unresolved":false,"context_lines":[{"line_number":702,"context_line":"# set to true. (string value)"},{"line_number":703,"context_line":"#domain_config_dir\u003d/etc/keystone/domains"},{"line_number":704,"context_line":""},{"line_number":705,"context_line":"# The internal format of user and group IDs changed at"},{"line_number":706,"context_line":"# IceHouse. For domains that do not understand domains (e.g."},{"line_number":707,"context_line":"# LDAP), keystone can not know whether an ID was created in"},{"line_number":708,"context_line":"# the old or new format. By default it will return it in the"}],"source_content_type":"application/octet-stream","patch_set":12,"id":"AAAAU3%2F%2FmbE%3D","line":705,"updated":"2014-02-25 18:25:24.000000000","message":"s/at Icehouse/in Icehouse/","commit_id":"016eb2481628895e0b8176055ed3c19fc6149348"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"0c0ac3e7ee1257b823fcda4292dfca3156173f8b","unresolved":false,"context_lines":[{"line_number":702,"context_line":"# set to true. (string value)"},{"line_number":703,"context_line":"#domain_config_dir\u003d/etc/keystone/domains"},{"line_number":704,"context_line":""},{"line_number":705,"context_line":"# The internal format of user and group IDs changed at"},{"line_number":706,"context_line":"# IceHouse. For domains that do not understand domains (e.g."},{"line_number":707,"context_line":"# LDAP), keystone can not know whether an ID was created in"},{"line_number":708,"context_line":"# the old or new format. By default it will return it in the"}],"source_content_type":"application/octet-stream","patch_set":12,"id":"AAAAU3%2F%2FlMA%3D","line":705,"in_reply_to":"AAAAU3%2F%2FmbE%3D","updated":"2014-02-26 00:47:48.000000000","message":"Done","commit_id":"016eb2481628895e0b8176055ed3c19fc6149348"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"8ee443030e3c8514f5892dfc99ce2887a25ea071","unresolved":false,"context_lines":[{"line_number":703,"context_line":"#domain_config_dir\u003d/etc/keystone/domains"},{"line_number":704,"context_line":""},{"line_number":705,"context_line":"# The internal format of user and group IDs changed at"},{"line_number":706,"context_line":"# IceHouse. For domains that do not understand domains (e.g."},{"line_number":707,"context_line":"# LDAP), keystone can not know whether an ID was created in"},{"line_number":708,"context_line":"# the old or new format. By default it will return it in the"},{"line_number":709,"context_line":"# new format, which might mean that the ID will have changed."}],"source_content_type":"application/octet-stream","patch_set":12,"id":"AAAAU3%2F%2FmcA%3D","line":706,"updated":"2014-02-25 18:25:24.000000000","message":"for *backends that don\u0027t understand domains?","commit_id":"016eb2481628895e0b8176055ed3c19fc6149348"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"0c0ac3e7ee1257b823fcda4292dfca3156173f8b","unresolved":false,"context_lines":[{"line_number":703,"context_line":"#domain_config_dir\u003d/etc/keystone/domains"},{"line_number":704,"context_line":""},{"line_number":705,"context_line":"# The internal format of user and group IDs changed at"},{"line_number":706,"context_line":"# IceHouse. For domains that do not understand domains (e.g."},{"line_number":707,"context_line":"# LDAP), keystone can not know whether an ID was created in"},{"line_number":708,"context_line":"# the old or new format. By default it will return it in the"},{"line_number":709,"context_line":"# new format, which might mean that the ID will have changed."}],"source_content_type":"application/octet-stream","patch_set":12,"id":"AAAAU3%2F%2FlL8%3D","line":706,"in_reply_to":"AAAAU3%2F%2FmcA%3D","updated":"2014-02-26 00:47:48.000000000","message":"Done","commit_id":"016eb2481628895e0b8176055ed3c19fc6149348"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"8ee443030e3c8514f5892dfc99ce2887a25ea071","unresolved":false,"context_lines":[{"line_number":704,"context_line":""},{"line_number":705,"context_line":"# The internal format of user and group IDs changed at"},{"line_number":706,"context_line":"# IceHouse. For domains that do not understand domains (e.g."},{"line_number":707,"context_line":"# LDAP), keystone can not know whether an ID was created in"},{"line_number":708,"context_line":"# the old or new format. By default it will return it in the"},{"line_number":709,"context_line":"# new format, which might mean that the ID will have changed."},{"line_number":710,"context_line":"# Since, up until now, the LDAP backend only supported the"}],"source_content_type":"application/octet-stream","patch_set":12,"id":"AAAAU3%2F%2Fmbw%3D","line":707,"updated":"2014-02-25 18:25:24.000000000","message":"cannot","commit_id":"016eb2481628895e0b8176055ed3c19fc6149348"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"0c0ac3e7ee1257b823fcda4292dfca3156173f8b","unresolved":false,"context_lines":[{"line_number":704,"context_line":""},{"line_number":705,"context_line":"# The internal format of user and group IDs changed at"},{"line_number":706,"context_line":"# IceHouse. For domains that do not understand domains (e.g."},{"line_number":707,"context_line":"# LDAP), keystone can not know whether an ID was created in"},{"line_number":708,"context_line":"# the old or new format. By default it will return it in the"},{"line_number":709,"context_line":"# new format, which might mean that the ID will have changed."},{"line_number":710,"context_line":"# Since, up until now, the LDAP backend only supported the"}],"source_content_type":"application/octet-stream","patch_set":12,"id":"AAAAU3%2F%2FlL0%3D","line":707,"in_reply_to":"AAAAU3%2F%2Fmbw%3D","updated":"2014-02-26 00:47:48.000000000","message":"Done","commit_id":"016eb2481628895e0b8176055ed3c19fc6149348"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"ae0662cf3ee6707eb5c62fa8a87e76c18c5ad680","unresolved":false,"context_lines":[{"line_number":712,"context_line":"# preserved for existing entities in this domain, being"},{"line_number":713,"context_line":"# handled by the default backend LDAP driver. Setting this"},{"line_number":714,"context_line":"# variable to True will prevent this issue. (boolean value)"},{"line_number":715,"context_line":"#backward_compatible_default_driver_entity_ids\u003dfalse"},{"line_number":716,"context_line":""},{"line_number":717,"context_line":"# Keystone Identity backend driver (string value)"},{"line_number":718,"context_line":"#driver\u003dkeystone.identity.backends.sql.Identity"}],"source_content_type":"application/octet-stream","patch_set":12,"id":"AAAAU3%2F%2FuIQ%3D","line":715,"updated":"2014-02-25 04:17:29.000000000","message":"I thought we were going to make it True?","commit_id":"016eb2481628895e0b8176055ed3c19fc6149348"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d2132febe94cf4e040feb164f2e7b7e74a1094ab","unresolved":false,"context_lines":[{"line_number":712,"context_line":"# preserved for existing entities in this domain, being"},{"line_number":713,"context_line":"# handled by the default backend LDAP driver. Setting this"},{"line_number":714,"context_line":"# variable to True will prevent this issue. (boolean value)"},{"line_number":715,"context_line":"#backward_compatible_default_driver_entity_ids\u003dfalse"},{"line_number":716,"context_line":""},{"line_number":717,"context_line":"# Keystone Identity backend driver (string value)"},{"line_number":718,"context_line":"#driver\u003dkeystone.identity.backends.sql.Identity"}],"source_content_type":"application/octet-stream","patch_set":12,"id":"AAAAU3%2F%2Ftj8%3D","line":715,"in_reply_to":"AAAAU3%2F%2FuIQ%3D","updated":"2014-02-25 18:06:24.000000000","message":"not sure we agreed that…but I think you\u0027re right :-)","commit_id":"016eb2481628895e0b8176055ed3c19fc6149348"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"95a94ec3a4c3962630fffee8cc9c149cb7435a2a","unresolved":false,"context_lines":[{"line_number":760,"context_line":"# drivers, then keystone only honors backards compatible IDs"},{"line_number":761,"context_line":"# for the default domain, all other domains will always use"},{"line_number":762,"context_line":"# the mapping (boolean value)"},{"line_number":763,"context_line":"#backward_compatible_ids\u003dtrue"},{"line_number":764,"context_line":""},{"line_number":765,"context_line":"# Identity backend driver. (string value)"},{"line_number":766,"context_line":"#driver\u003dkeystone.identity.backends.sql.Identity"}],"source_content_type":"application/octet-stream","patch_set":28,"id":"1ae5cdf2_573b82d0","line":763,"updated":"2014-06-11 15:12:15.000000000","message":"Should this be in identity mapping?","commit_id":"befaba09d523c08cf7fcb02eb6897f8d05ed6905"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"95a94ec3a4c3962630fffee8cc9c149cb7435a2a","unresolved":false,"context_lines":[{"line_number":795,"context_line":"# more than one of them to be generating the ID at any given"},{"line_number":796,"context_line":"# time).  This value should be considered immutable. (string"},{"line_number":797,"context_line":"# value)"},{"line_number":798,"context_line":"#public_id_generator\u003duuid"},{"line_number":799,"context_line":""},{"line_number":800,"context_line":""},{"line_number":801,"context_line":"[kvs]"}],"source_content_type":"application/octet-stream","patch_set":28,"id":"1ae5cdf2_77387ed3","line":798,"updated":"2014-06-11 15:12:15.000000000","message":"suggest making this sha1.","commit_id":"befaba09d523c08cf7fcb02eb6897f8d05ed6905"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"20624725187729593b45de2b2e426290d84b44da","unresolved":false,"context_lines":[{"line_number":858,"context_line":"#"},{"line_number":859,"context_line":""},{"line_number":860,"context_line":"# URL for connecting to the LDAP server. (string value)"},{"line_number":861,"context_line":"#url\u003dldap://localhost"},{"line_number":862,"context_line":""},{"line_number":863,"context_line":"# User BindDN to query the LDAP server. (string value)"},{"line_number":864,"context_line":"#user\u003d\u003cNone\u003e"}],"source_content_type":"application/octet-stream","patch_set":33,"id":"1ae5cdf2_3726c867","line":861,"updated":"2014-06-27 13:33:39.000000000","message":"Does anyone know why the master version of these have \u0027keystone\u0027, even though the master config has \u0027localhost\u0027 ?","commit_id":"000977dc69cbd057f34409bf77587752ec93d971"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"1ff10d4e2589b6f1aa16d1998bfa44d12fcbc5b4","unresolved":false,"context_lines":[{"line_number":858,"context_line":"#"},{"line_number":859,"context_line":""},{"line_number":860,"context_line":"# URL for connecting to the LDAP server. (string value)"},{"line_number":861,"context_line":"#url\u003dldap://localhost"},{"line_number":862,"context_line":""},{"line_number":863,"context_line":"# User BindDN to query the LDAP server. (string value)"},{"line_number":864,"context_line":"#user\u003d\u003cNone\u003e"}],"source_content_type":"application/octet-stream","patch_set":34,"id":"1ae5cdf2_960eb530","line":861,"updated":"2014-06-27 18:01:52.000000000","message":"Does anyone know why the master version of these have \u0027keystone\u0027, even though the master config has \u0027localhost\u0027 ?","commit_id":"efeecefe4779c092329d4112a7c25b05a2cabee4"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"b00784c2494a8dd53120a800016afccfb7636c8c","unresolved":false,"context_lines":[{"line_number":802,"context_line":"#driver\u003dkeystone.identity.mapping_backends.sql.Mapping"},{"line_number":803,"context_line":""},{"line_number":804,"context_line":"# Public ID generator for user and group entities. (string"},{"line_number":805,"context_line":"# value)"},{"line_number":806,"context_line":"#generator\u003dkeystone.identity.id_generators.sha256.Generator"},{"line_number":807,"context_line":""},{"line_number":808,"context_line":"# The format of user and group IDs changed in Juno for"}],"source_content_type":"application/octet-stream","patch_set":40,"id":"baada198_b22089f8","line":805,"updated":"2014-07-10 20:08:45.000000000","message":"add note: ID\u0027s are limited to 64 bytes, so sha256 is the most secure hashing algorithm currently supported","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"1338d39d3d1a6c9e6ff2b59cbb1d7c872189e792","unresolved":false,"context_lines":[{"line_number":802,"context_line":"#driver\u003dkeystone.identity.mapping_backends.sql.Mapping"},{"line_number":803,"context_line":""},{"line_number":804,"context_line":"# Public ID generator for user and group entities. (string"},{"line_number":805,"context_line":"# value)"},{"line_number":806,"context_line":"#generator\u003dkeystone.identity.id_generators.sha256.Generator"},{"line_number":807,"context_line":""},{"line_number":808,"context_line":"# The format of user and group IDs changed in Juno for"}],"source_content_type":"application/octet-stream","patch_set":40,"id":"baada198_de188ad5","line":805,"in_reply_to":"baada198_b22089f8","updated":"2014-07-11 15:42:10.000000000","message":"Done","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"}],"keystone/assignment/backends/sql.py":[{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"ae0662cf3ee6707eb5c62fa8a87e76c18c5ad680","unresolved":false,"context_lines":[{"line_number":538,"context_line":"                 AssignmentType.USER_DOMAIN, AssignmentType.GROUP_DOMAIN,"},{"line_number":539,"context_line":"                 name\u003d\u0027type\u0027),"},{"line_number":540,"context_line":"        nullable\u003dFalse)"},{"line_number":541,"context_line":"    actor_id \u003d sql.Column(sql.String(255), nullable\u003dFalse)"},{"line_number":542,"context_line":"    target_id \u003d sql.Column(sql.String(64), nullable\u003dFalse)"},{"line_number":543,"context_line":"    role_id \u003d sql.Column(sql.String(64), sql.ForeignKey(\u0027role.id\u0027),"},{"line_number":544,"context_line":"                         nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2FuEk%3D","line":541,"updated":"2014-02-25 04:17:29.000000000","message":"Can you use ENTITY_ID_LEN and TYPE here?","commit_id":"016eb2481628895e0b8176055ed3c19fc6149348"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d2132febe94cf4e040feb164f2e7b7e74a1094ab","unresolved":false,"context_lines":[{"line_number":538,"context_line":"                 AssignmentType.USER_DOMAIN, AssignmentType.GROUP_DOMAIN,"},{"line_number":539,"context_line":"                 name\u003d\u0027type\u0027),"},{"line_number":540,"context_line":"        nullable\u003dFalse)"},{"line_number":541,"context_line":"    actor_id \u003d sql.Column(sql.String(255), nullable\u003dFalse)"},{"line_number":542,"context_line":"    target_id \u003d sql.Column(sql.String(64), nullable\u003dFalse)"},{"line_number":543,"context_line":"    role_id \u003d sql.Column(sql.String(64), sql.ForeignKey(\u0027role.id\u0027),"},{"line_number":544,"context_line":"                         nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2FtjY%3D","line":541,"in_reply_to":"AAAAU3%2F%2FuEk%3D","updated":"2014-02-25 18:06:24.000000000","message":"have a slight circular import problem….idenity imports assignment already (to allow for foreign keys)…and to do that I\u0027d have to import identity here...","commit_id":"016eb2481628895e0b8176055ed3c19fc6149348"}],"keystone/assignment/core.py":[{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"ae0662cf3ee6707eb5c62fa8a87e76c18c5ad680","unresolved":false,"context_lines":[{"line_number":345,"context_line":"        self.driver.delete_domain(domain_id)"},{"line_number":346,"context_line":"        self.get_domain.invalidate(self, domain_id)"},{"line_number":347,"context_line":"        self.get_domain_by_name.invalidate(self, domain[\u0027name\u0027])"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"    def _delete_domain_contents(self, domain_id):"},{"line_number":350,"context_line":"        \"\"\"Delete the contents of a domain."},{"line_number":351,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2FuHk%3D","line":348,"updated":"2014-02-25 04:17:29.000000000","message":"Pretty sure we should not do this for Any LDAP backends.  If you are deleting a domain, just un-config it.","commit_id":"016eb2481628895e0b8176055ed3c19fc6149348"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d2132febe94cf4e040feb164f2e7b7e74a1094ab","unresolved":false,"context_lines":[{"line_number":345,"context_line":"        self.driver.delete_domain(domain_id)"},{"line_number":346,"context_line":"        self.get_domain.invalidate(self, domain_id)"},{"line_number":347,"context_line":"        self.get_domain_by_name.invalidate(self, domain[\u0027name\u0027])"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"    def _delete_domain_contents(self, domain_id):"},{"line_number":350,"context_line":"        \"\"\"Delete the contents of a domain."},{"line_number":351,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2FtiQ%3D","line":348,"in_reply_to":"AAAAU3%2F%2FuHk%3D","updated":"2014-02-25 18:06:24.000000000","message":"If the domain is not RO…..and someone has just chosen to use LDAP as their storage technology…why would we not to do this?","commit_id":"016eb2481628895e0b8176055ed3c19fc6149348"}],"keystone/cli.py":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"95a94ec3a4c3962630fffee8cc9c149cb7435a2a","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        parser.add_argument(\u0027--type\u0027, default\u003dNone, choices\u003d[\u0027user\u0027, \u0027group\u0027],"},{"line_number":181,"context_line":"                            help\u003d(\u0027Purge any mappings for the type \u0027"},{"line_number":182,"context_line":"                                  \u0027specified.\u0027))"},{"line_number":183,"context_line":"        return parser"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    @staticmethod"},{"line_number":186,"context_line":"    def main():"}],"source_content_type":"text/x-python","patch_set":28,"id":"1ae5cdf2_176c9acf","line":183,"updated":"2014-06-11 15:12:15.000000000","message":"Suggest adding an \u0027unused\u0027 (e.g. look at assignments and purge anything that has no assignments).","commit_id":"befaba09d523c08cf7fcb02eb6897f8d05ed6905"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"b00784c2494a8dd53120a800016afccfb7636c8c","unresolved":false,"context_lines":[{"line_number":214,"context_line":"                return assignment_manager.driver.get_domain_by_name(name)[\u0027id\u0027]"},{"line_number":215,"context_line":"            except KeyError:"},{"line_number":216,"context_line":"                raise ValueError(_(\"Unknown domain \u0027%(name)s\u0027 specified by \""},{"line_number":217,"context_line":"                                   \"--domain-name\"), {\u0027name\u0027: name})"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        validate_options()"},{"line_number":220,"context_line":"        # Now that we have validated the options, we know that at least one"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_92cc6563","line":217,"updated":"2014-07-10 20:08:45.000000000","message":"change the comma to a %","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"1338d39d3d1a6c9e6ff2b59cbb1d7c872189e792","unresolved":false,"context_lines":[{"line_number":214,"context_line":"                return assignment_manager.driver.get_domain_by_name(name)[\u0027id\u0027]"},{"line_number":215,"context_line":"            except KeyError:"},{"line_number":216,"context_line":"                raise ValueError(_(\"Unknown domain \u0027%(name)s\u0027 specified by \""},{"line_number":217,"context_line":"                                   \"--domain-name\"), {\u0027name\u0027: name})"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        validate_options()"},{"line_number":220,"context_line":"        # Now that we have validated the options, we know that at least one"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_3e27c613","line":217,"in_reply_to":"baada198_92cc6563","updated":"2014-07-11 15:42:10.000000000","message":"Done","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e6c7eb4a740cec45d7bf2ee4dfddf222f82ed617","unresolved":false,"context_lines":[{"line_number":243,"context_line":"    PKISetup,"},{"line_number":244,"context_line":"    SSLSetup,"},{"line_number":245,"context_line":"    TokenFlush,"},{"line_number":246,"context_line":"    MappingPurge,"},{"line_number":247,"context_line":"]"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_d2edfdb8","line":246,"updated":"2014-07-10 20:08:04.000000000","message":"keep these in alphabetical order.","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"1338d39d3d1a6c9e6ff2b59cbb1d7c872189e792","unresolved":false,"context_lines":[{"line_number":243,"context_line":"    PKISetup,"},{"line_number":244,"context_line":"    SSLSetup,"},{"line_number":245,"context_line":"    TokenFlush,"},{"line_number":246,"context_line":"    MappingPurge,"},{"line_number":247,"context_line":"]"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_1e8682db","line":246,"in_reply_to":"baada198_d2edfdb8","updated":"2014-07-11 15:42:10.000000000","message":"Done","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"}],"keystone/common/config.py":[{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"ae0662cf3ee6707eb5c62fa8a87e76c18c5ad680","unresolved":false,"context_lines":[{"line_number":135,"context_line":"                   help\u003d(\u0027Path for Keystone to locate the domain specific\u0027"},{"line_number":136,"context_line":"                         \u0027identity configuration files if \u0027"},{"line_number":137,"context_line":"                         \u0027domain_specific_drivers_enabled is set to true.\u0027)),"},{"line_number":138,"context_line":"        cfg.BoolOpt(\u0027backward_compatible_default_driver_entity_ids\u0027,"},{"line_number":139,"context_line":"                    default\u003dFalse,"},{"line_number":140,"context_line":"                    help\u003d(\u0027The internal format of user and group IDs changed \u0027"},{"line_number":141,"context_line":"                          \u0027at IceHouse. For domains that do not understand \u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2FuF0%3D","line":138,"updated":"2014-02-25 04:17:29.000000000","message":"I think it is a mistake to make the default not be Backwards compat.  This is going to trip up a lot of people.  Better to make it an explicit choice to move to the new domain + userid format.","commit_id":"016eb2481628895e0b8176055ed3c19fc6149348"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d2132febe94cf4e040feb164f2e7b7e74a1094ab","unresolved":false,"context_lines":[{"line_number":135,"context_line":"                   help\u003d(\u0027Path for Keystone to locate the domain specific\u0027"},{"line_number":136,"context_line":"                         \u0027identity configuration files if \u0027"},{"line_number":137,"context_line":"                         \u0027domain_specific_drivers_enabled is set to true.\u0027)),"},{"line_number":138,"context_line":"        cfg.BoolOpt(\u0027backward_compatible_default_driver_entity_ids\u0027,"},{"line_number":139,"context_line":"                    default\u003dFalse,"},{"line_number":140,"context_line":"                    help\u003d(\u0027The internal format of user and group IDs changed \u0027"},{"line_number":141,"context_line":"                          \u0027at IceHouse. For domains that do not understand \u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2Ftkg%3D","line":138,"in_reply_to":"AAAAU3%2F%2FuF0%3D","updated":"2014-02-25 18:06:24.000000000","message":"yeah….I think I agree with you…I\u0027ll switch it","commit_id":"016eb2481628895e0b8176055ed3c19fc6149348"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"1bc3b7eae33ff9c2c325d186d121a0205fa52d1d","unresolved":false,"context_lines":[{"line_number":135,"context_line":"                   help\u003d(\u0027Path for Keystone to locate the domain specific\u0027"},{"line_number":136,"context_line":"                         \u0027identity configuration files if \u0027"},{"line_number":137,"context_line":"                         \u0027domain_specific_drivers_enabled is set to true.\u0027)),"},{"line_number":138,"context_line":"        cfg.BoolOpt(\u0027backward_compatible_default_driver_entity_ids\u0027,"},{"line_number":139,"context_line":"                    default\u003dTrue,"},{"line_number":140,"context_line":"                    help\u003d(\u0027The internal format of user and group IDs changed \u0027"},{"line_number":141,"context_line":"                          \u0027in IceHouse. For backends that do not understand \u0027"}],"source_content_type":"text/x-python","patch_set":21,"id":"7adec928_619e9009","line":138,"updated":"2014-05-20 18:20:01.000000000","message":"This config option name is too long.  legacy_entity_ids?","commit_id":"82e2543e25b95296f3b9c95fa3b4c2ccec873052"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"60b9d8d83c7b9e92c86df79971ae5b4f8fa8abe1","unresolved":false,"context_lines":[{"line_number":135,"context_line":"                   help\u003d(\u0027Path for Keystone to locate the domain specific\u0027"},{"line_number":136,"context_line":"                         \u0027identity configuration files if \u0027"},{"line_number":137,"context_line":"                         \u0027domain_specific_drivers_enabled is set to true.\u0027)),"},{"line_number":138,"context_line":"        cfg.BoolOpt(\u0027backward_compatible_default_driver_entity_ids\u0027,"},{"line_number":139,"context_line":"                    default\u003dTrue,"},{"line_number":140,"context_line":"                    help\u003d(\u0027The internal format of user and group IDs changed \u0027"},{"line_number":141,"context_line":"                          \u0027in IceHouse. For backends that do not understand \u0027"}],"source_content_type":"text/x-python","patch_set":21,"id":"3ae8d1ca_06613039","line":138,"in_reply_to":"7adec928_619e9009","updated":"2014-06-02 08:48:30.000000000","message":"Done","commit_id":"82e2543e25b95296f3b9c95fa3b4c2ccec873052"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"1bc3b7eae33ff9c2c325d186d121a0205fa52d1d","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        cfg.IntOpt(\u0027list_limit\u0027, default\u003dNone,"},{"line_number":161,"context_line":"                   help\u003d\u0027Maximum number of entities that will be returned in \u0027"},{"line_number":162,"context_line":"                        \u0027an identity collection\u0027)],"},{"line_number":163,"context_line":"    \u0027id_mapping\u0027: ["},{"line_number":164,"context_line":"        cfg.StrOpt(\u0027driver\u0027,"},{"line_number":165,"context_line":"                   default\u003d(\u0027keystone.identity.mapping_backends\u0027"},{"line_number":166,"context_line":"                            \u0027.sql.Mapping\u0027),"}],"source_content_type":"text/x-python","patch_set":21,"id":"7adec928_c184c4b3","line":163,"updated":"2014-05-20 18:20:01.000000000","message":"id-\u003e identity  or idenitifier","commit_id":"82e2543e25b95296f3b9c95fa3b4c2ccec873052"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"60b9d8d83c7b9e92c86df79971ae5b4f8fa8abe1","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        cfg.IntOpt(\u0027list_limit\u0027, default\u003dNone,"},{"line_number":161,"context_line":"                   help\u003d\u0027Maximum number of entities that will be returned in \u0027"},{"line_number":162,"context_line":"                        \u0027an identity collection\u0027)],"},{"line_number":163,"context_line":"    \u0027id_mapping\u0027: ["},{"line_number":164,"context_line":"        cfg.StrOpt(\u0027driver\u0027,"},{"line_number":165,"context_line":"                   default\u003d(\u0027keystone.identity.mapping_backends\u0027"},{"line_number":166,"context_line":"                            \u0027.sql.Mapping\u0027),"}],"source_content_type":"text/x-python","patch_set":21,"id":"3ae8d1ca_465b3887","line":163,"in_reply_to":"7adec928_c184c4b3","updated":"2014-06-02 08:48:30.000000000","message":"Done","commit_id":"82e2543e25b95296f3b9c95fa3b4c2ccec873052"}],"keystone/common/controller.py":[{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"c5f74f2b35fd4be2f0787482de24f8167446b0e9","unresolved":false,"context_lines":[{"line_number":547,"context_line":"                _(\u0027No domain information found as part of list collection\u0027))"},{"line_number":548,"context_line":"            raise exception.Unauthorized()"},{"line_number":549,"context_line":""},{"line_number":550,"context_line":"    # REMOVE"},{"line_number":551,"context_line":"    def _get_domain_id_from_token(self, context):"},{"line_number":552,"context_line":"        \"\"\"Get the domain_id for a v3 create call."},{"line_number":553,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2B87U%3D","line":550,"updated":"2014-02-18 01:43:58.000000000","message":"no, this stays…remove the comment","commit_id":"1ec4bd401add8237c4fa24745e29801bec7ea77a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a14323dbd7782ffb0dabc96d3d11d20bcc317a6e","unresolved":false,"context_lines":[{"line_number":510,"context_line":"    def _assign_domain_specific_unique_id(self, ref):"},{"line_number":511,"context_line":"        ref \u003d self._assign_unique_id(ref)"},{"line_number":512,"context_line":"        if CONF.identity.domain_specific_drivers_enabled:"},{"line_number":513,"context_line":"            if \u0027domain_id\u0027 not in ref:"},{"line_number":514,"context_line":"                raise exception.ValidationError("},{"line_number":515,"context_line":"                    _(\u0027domain_id is required as part of entity\u0027))"},{"line_number":516,"context_line":"            ref[\u0027id\u0027] \u003d \"%s@@%s\" % (ref[\u0027id\u0027], ref[\u0027domain_id\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUX%2F%2BkC4%3D","line":513,"updated":"2014-02-20 14:07:48.000000000","message":"there\u0027s no tests for the case where CONF.identity.domain_specific_drivers_enabled is True so this isn\u0027t tested.","commit_id":"93070ea459261d1b76518882fe3c98378770a146"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"38376c0b638aca68695a564ea4bdacc05145ddb9","unresolved":false,"context_lines":[{"line_number":510,"context_line":"    def _assign_domain_specific_unique_id(self, ref):"},{"line_number":511,"context_line":"        ref \u003d self._assign_unique_id(ref)"},{"line_number":512,"context_line":"        if CONF.identity.domain_specific_drivers_enabled:"},{"line_number":513,"context_line":"            if \u0027domain_id\u0027 not in ref:"},{"line_number":514,"context_line":"                raise exception.ValidationError("},{"line_number":515,"context_line":"                    _(\u0027domain_id is required as part of entity\u0027))"},{"line_number":516,"context_line":"            ref[\u0027id\u0027] \u003d \"%s@@%s\" % (ref[\u0027id\u0027], ref[\u0027domain_id\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUX%2F%2BSDs%3D","line":513,"in_reply_to":"AAAAUX%2F%2BkC4%3D","updated":"2014-02-22 17:17:41.000000000","message":"will add, thanks","commit_id":"93070ea459261d1b76518882fe3c98378770a146"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a14323dbd7782ffb0dabc96d3d11d20bcc317a6e","unresolved":false,"context_lines":[{"line_number":530,"context_line":"        if context.get(\u0027domain_id\u0027) is not None:"},{"line_number":531,"context_line":"            return context.get(\u0027domain_id\u0027)"},{"line_number":532,"context_line":""},{"line_number":533,"context_line":"        try:"},{"line_number":534,"context_line":"            token_ref \u003d self.token_api.get_token(context[\u0027token_id\u0027])"},{"line_number":535,"context_line":"        except exception.KeyError:"},{"line_number":536,"context_line":"            raise exception.ValidationError("}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUX%2F%2BkCY%3D","line":533,"updated":"2014-02-20 14:07:48.000000000","message":"according to coverage report there\u0027s nothing testing the code in this function.","commit_id":"93070ea459261d1b76518882fe3c98378770a146"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"38376c0b638aca68695a564ea4bdacc05145ddb9","unresolved":false,"context_lines":[{"line_number":530,"context_line":"        if context.get(\u0027domain_id\u0027) is not None:"},{"line_number":531,"context_line":"            return context.get(\u0027domain_id\u0027)"},{"line_number":532,"context_line":""},{"line_number":533,"context_line":"        try:"},{"line_number":534,"context_line":"            token_ref \u003d self.token_api.get_token(context[\u0027token_id\u0027])"},{"line_number":535,"context_line":"        except exception.KeyError:"},{"line_number":536,"context_line":"            raise exception.ValidationError("}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUX%2F%2BSDo%3D","line":533,"in_reply_to":"AAAAUX%2F%2BkCY%3D","updated":"2014-02-22 17:17:41.000000000","message":"will add, thanks","commit_id":"93070ea459261d1b76518882fe3c98378770a146"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a14323dbd7782ffb0dabc96d3d11d20bcc317a6e","unresolved":false,"context_lines":[{"line_number":561,"context_line":"        # a v3 protected call).  However, this optimization is probably not"},{"line_number":562,"context_line":"        # worth the duplication of state"},{"line_number":563,"context_line":"        try:"},{"line_number":564,"context_line":"            token_ref \u003d self.token_api.get_token(context[\u0027token_id\u0027])"},{"line_number":565,"context_line":"        except exception.KeyError:"},{"line_number":566,"context_line":"            # This might happen if we use the Admin token, for instance"},{"line_number":567,"context_line":"            raise exception.ValidationError("}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUX%2F%2BkCA%3D","line":564,"updated":"2014-02-20 14:07:48.000000000","message":"this whole function is untested.","commit_id":"93070ea459261d1b76518882fe3c98378770a146"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"38376c0b638aca68695a564ea4bdacc05145ddb9","unresolved":false,"context_lines":[{"line_number":561,"context_line":"        # a v3 protected call).  However, this optimization is probably not"},{"line_number":562,"context_line":"        # worth the duplication of state"},{"line_number":563,"context_line":"        try:"},{"line_number":564,"context_line":"            token_ref \u003d self.token_api.get_token(context[\u0027token_id\u0027])"},{"line_number":565,"context_line":"        except exception.KeyError:"},{"line_number":566,"context_line":"            # This might happen if we use the Admin token, for instance"},{"line_number":567,"context_line":"            raise exception.ValidationError("}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUX%2F%2BSDk%3D","line":564,"in_reply_to":"AAAAUX%2F%2BkCA%3D","updated":"2014-02-22 17:17:41.000000000","message":"will add, thanks","commit_id":"93070ea459261d1b76518882fe3c98378770a146"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"1bc3b7eae33ff9c2c325d186d121a0205fa52d1d","unresolved":false,"context_lines":[{"line_number":514,"context_line":"        ref[\u0027id\u0027] \u003d uuid.uuid4().hex"},{"line_number":515,"context_line":"        return ref"},{"line_number":516,"context_line":""},{"line_number":517,"context_line":"    def _get_domain_id_for_list_request(self, context):"},{"line_number":518,"context_line":"        \"\"\"Get the domain_id for a v3 list call."},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"        If we running with multiple domain drivers, then the caller must"}],"source_content_type":"text/x-python","patch_set":21,"id":"7adec928_81d55cbb","line":517,"range":{"start_line":517,"start_character":7,"end_line":517,"end_character":39},"updated":"2014-05-20 18:20:01.000000000","message":"Where is this called?  If it is from outside this file it should not be private.","commit_id":"82e2543e25b95296f3b9c95fa3b4c2ccec873052"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"60b9d8d83c7b9e92c86df79971ae5b4f8fa8abe1","unresolved":false,"context_lines":[{"line_number":514,"context_line":"        ref[\u0027id\u0027] \u003d uuid.uuid4().hex"},{"line_number":515,"context_line":"        return ref"},{"line_number":516,"context_line":""},{"line_number":517,"context_line":"    def _get_domain_id_for_list_request(self, context):"},{"line_number":518,"context_line":"        \"\"\"Get the domain_id for a v3 list call."},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"        If we running with multiple domain drivers, then the caller must"}],"source_content_type":"text/x-python","patch_set":21,"id":"3ae8d1ca_66ee748a","line":517,"in_reply_to":"7adec928_81d55cbb","updated":"2014-06-02 08:48:30.000000000","message":"It\u0027s called from controllers that inherit from this class.  I was going by the convention of the rest of the methods here (and indeed this is a modified version of an existing method).  If we thing the convention is wrong across the board here, I\u0027d be happy to come back in and change them all in a separate patch.","commit_id":"82e2543e25b95296f3b9c95fa3b4c2ccec873052"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"b00784c2494a8dd53120a800016afccfb7636c8c","unresolved":false,"context_lines":[{"line_number":549,"context_line":"        ref[\u0027id\u0027] \u003d uuid.uuid4().hex"},{"line_number":550,"context_line":"        return ref"},{"line_number":551,"context_line":""},{"line_number":552,"context_line":"    def _get_domain_id_for_list_request(self, context):"},{"line_number":553,"context_line":"        \"\"\"Get the domain_id for a v3 list call."},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"        If we running with multiple domain drivers, then the caller must"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_7ccc0a62","line":552,"updated":"2014-07-10 20:08:45.000000000","message":"wishlist: this should be moved into the identity controller","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"1338d39d3d1a6c9e6ff2b59cbb1d7c872189e792","unresolved":false,"context_lines":[{"line_number":549,"context_line":"        ref[\u0027id\u0027] \u003d uuid.uuid4().hex"},{"line_number":550,"context_line":"        return ref"},{"line_number":551,"context_line":""},{"line_number":552,"context_line":"    def _get_domain_id_for_list_request(self, context):"},{"line_number":553,"context_line":"        \"\"\"Get the domain_id for a v3 list call."},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"        If we running with multiple domain drivers, then the caller must"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_def40a5d","line":552,"in_reply_to":"baada198_7ccc0a62","updated":"2014-07-11 15:42:10.000000000","message":"I\u0027ll come back in later and look at this","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"b00784c2494a8dd53120a800016afccfb7636c8c","unresolved":false,"context_lines":[{"line_number":606,"context_line":""},{"line_number":607,"context_line":"        if (token_ref.get(\u0027token_data\u0027) and"},{"line_number":608,"context_line":"            token_ref[\u0027token_data\u0027].get(\u0027token\u0027) and"},{"line_number":609,"context_line":"                \u0027domain\u0027 in token_ref[\u0027token_data\u0027][\u0027token\u0027]):"},{"line_number":610,"context_line":"                    return token_ref[\u0027token_data\u0027][\u0027token\u0027][\u0027domain\u0027][\u0027id\u0027]"},{"line_number":611,"context_line":"        else:"},{"line_number":612,"context_line":"            # TODO(henry-nash): We should issue an exception here since if"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_fc63ba3e","line":609,"updated":"2014-07-10 20:08:45.000000000","message":"nit: chain get\u0027s together to simplify this\n\n  .get(\u0027token\u0027, {}).get(\u0027domain\u0027, {}).get(\u0027id\u0027)","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"1338d39d3d1a6c9e6ff2b59cbb1d7c872189e792","unresolved":false,"context_lines":[{"line_number":606,"context_line":""},{"line_number":607,"context_line":"        if (token_ref.get(\u0027token_data\u0027) and"},{"line_number":608,"context_line":"            token_ref[\u0027token_data\u0027].get(\u0027token\u0027) and"},{"line_number":609,"context_line":"                \u0027domain\u0027 in token_ref[\u0027token_data\u0027][\u0027token\u0027]):"},{"line_number":610,"context_line":"                    return token_ref[\u0027token_data\u0027][\u0027token\u0027][\u0027domain\u0027][\u0027id\u0027]"},{"line_number":611,"context_line":"        else:"},{"line_number":612,"context_line":"            # TODO(henry-nash): We should issue an exception here since if"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_c071840d","line":609,"in_reply_to":"baada198_fc63ba3e","updated":"2014-07-11 15:42:10.000000000","message":"done","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a116aa1ce2c57f0f1c0d40bc82ba4746fbaf16fd","unresolved":false,"context_lines":[{"line_number":561,"context_line":"            return"},{"line_number":562,"context_line":""},{"line_number":563,"context_line":"        if context[\u0027query_string\u0027].get(\u0027domain_id\u0027) is not None:"},{"line_number":564,"context_line":"            return context[\u0027query_string\u0027].get(\u0027domain_id\u0027)"},{"line_number":565,"context_line":""},{"line_number":566,"context_line":"        try:"},{"line_number":567,"context_line":"            token_ref \u003d self.token_api.get_token(context[\u0027token_id\u0027])"}],"source_content_type":"text/x-python","patch_set":41,"id":"baada198_71bfccfc","line":564,"updated":"2014-07-10 21:32:37.000000000","message":"according to the coverage report none of this is tested.","commit_id":"c4aa7933ba4938c1ec8a9aed6c54a3f8fb18e6a2"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"1b26850606a052d2d9aace08062f54ff79283d52","unresolved":false,"context_lines":[{"line_number":561,"context_line":"            return"},{"line_number":562,"context_line":""},{"line_number":563,"context_line":"        if context[\u0027query_string\u0027].get(\u0027domain_id\u0027) is not None:"},{"line_number":564,"context_line":"            return context[\u0027query_string\u0027].get(\u0027domain_id\u0027)"},{"line_number":565,"context_line":""},{"line_number":566,"context_line":"        try:"},{"line_number":567,"context_line":"            token_ref \u003d self.token_api.get_token(context[\u0027token_id\u0027])"}],"source_content_type":"text/x-python","patch_set":41,"id":"baada198_3dcc3389","line":564,"in_reply_to":"baada198_71bfccfc","updated":"2014-07-11 15:42:17.000000000","message":"Done","commit_id":"c4aa7933ba4938c1ec8a9aed6c54a3f8fb18e6a2"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a116aa1ce2c57f0f1c0d40bc82ba4746fbaf16fd","unresolved":false,"context_lines":[{"line_number":597,"context_line":"            token_ref \u003d self.token_api.get_token(context[\u0027token_id\u0027])"},{"line_number":598,"context_line":"        except exception.KeyError:"},{"line_number":599,"context_line":"            # This might happen if we use the Admin token, for instance"},{"line_number":600,"context_line":"            raise exception.ValidationError("},{"line_number":601,"context_line":"                _(\u0027A domain-scoped token must be used\u0027))"},{"line_number":602,"context_line":"        except exception.TokenNotFound:"},{"line_number":603,"context_line":"            LOG.warning(_(\u0027Invalid token found while getting domain ID \u0027"}],"source_content_type":"text/x-python","patch_set":41,"id":"baada198_916c609e","line":600,"updated":"2014-07-10 21:32:37.000000000","message":"this isn\u0027t tested.","commit_id":"c4aa7933ba4938c1ec8a9aed6c54a3f8fb18e6a2"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"1b26850606a052d2d9aace08062f54ff79283d52","unresolved":false,"context_lines":[{"line_number":597,"context_line":"            token_ref \u003d self.token_api.get_token(context[\u0027token_id\u0027])"},{"line_number":598,"context_line":"        except exception.KeyError:"},{"line_number":599,"context_line":"            # This might happen if we use the Admin token, for instance"},{"line_number":600,"context_line":"            raise exception.ValidationError("},{"line_number":601,"context_line":"                _(\u0027A domain-scoped token must be used\u0027))"},{"line_number":602,"context_line":"        except exception.TokenNotFound:"},{"line_number":603,"context_line":"            LOG.warning(_(\u0027Invalid token found while getting domain ID \u0027"}],"source_content_type":"text/x-python","patch_set":41,"id":"baada198_7e74defd","line":600,"in_reply_to":"baada198_916c609e","updated":"2014-07-11 15:42:17.000000000","message":"If it\u0027s ok, I\u0027ll come back in late and add tests for this corner case.","commit_id":"c4aa7933ba4938c1ec8a9aed6c54a3f8fb18e6a2"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a116aa1ce2c57f0f1c0d40bc82ba4746fbaf16fd","unresolved":false,"context_lines":[{"line_number":600,"context_line":"            raise exception.ValidationError("},{"line_number":601,"context_line":"                _(\u0027A domain-scoped token must be used\u0027))"},{"line_number":602,"context_line":"        except exception.TokenNotFound:"},{"line_number":603,"context_line":"            LOG.warning(_(\u0027Invalid token found while getting domain ID \u0027"},{"line_number":604,"context_line":"                          \u0027for list request\u0027))"},{"line_number":605,"context_line":"            raise exception.Unauthorized()"},{"line_number":606,"context_line":""}],"source_content_type":"text/x-python","patch_set":41,"id":"baada198_d105f8c2","line":603,"updated":"2014-07-10 21:32:37.000000000","message":"this isn\u0027t tested.","commit_id":"c4aa7933ba4938c1ec8a9aed6c54a3f8fb18e6a2"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"1b26850606a052d2d9aace08062f54ff79283d52","unresolved":false,"context_lines":[{"line_number":600,"context_line":"            raise exception.ValidationError("},{"line_number":601,"context_line":"                _(\u0027A domain-scoped token must be used\u0027))"},{"line_number":602,"context_line":"        except exception.TokenNotFound:"},{"line_number":603,"context_line":"            LOG.warning(_(\u0027Invalid token found while getting domain ID \u0027"},{"line_number":604,"context_line":"                          \u0027for list request\u0027))"},{"line_number":605,"context_line":"            raise exception.Unauthorized()"},{"line_number":606,"context_line":""}],"source_content_type":"text/x-python","patch_set":41,"id":"baada198_de66ca50","line":603,"in_reply_to":"baada198_d105f8c2","updated":"2014-07-11 15:42:17.000000000","message":"If it\u0027s ok, I\u0027ll come back in late and add tests for this corner case.","commit_id":"c4aa7933ba4938c1ec8a9aed6c54a3f8fb18e6a2"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"9a10e28adf939f42d3cc650c50ad745d6f682da0","unresolved":false,"context_lines":[{"line_number":567,"context_line":"            token_ref \u003d self.token_api.get_token(context[\u0027token_id\u0027])"},{"line_number":568,"context_line":"            token \u003d token_ref[\u0027token_data\u0027][\u0027token\u0027]"},{"line_number":569,"context_line":"        except exception.KeyError:"},{"line_number":570,"context_line":"            raise exception.ValidationError("},{"line_number":571,"context_line":"                _(\u0027domain_id is required as part of entity\u0027))"},{"line_number":572,"context_line":"        except exception.TokenNotFound:"},{"line_number":573,"context_line":"            LOG.warning(_(\u0027Invalid token found while getting domain ID \u0027"}],"source_content_type":"text/x-python","patch_set":43,"id":"baada198_9af7f0d2","line":570,"updated":"2014-07-11 19:13:45.000000000","message":"this isn\u0027t tested.","commit_id":"0d66ff6e98f3edc636700db94a73726febc77b14"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"9a10e28adf939f42d3cc650c50ad745d6f682da0","unresolved":false,"context_lines":[{"line_number":570,"context_line":"            raise exception.ValidationError("},{"line_number":571,"context_line":"                _(\u0027domain_id is required as part of entity\u0027))"},{"line_number":572,"context_line":"        except exception.TokenNotFound:"},{"line_number":573,"context_line":"            LOG.warning(_(\u0027Invalid token found while getting domain ID \u0027"},{"line_number":574,"context_line":"                          \u0027for list request\u0027))"},{"line_number":575,"context_line":"            raise exception.Unauthorized()"},{"line_number":576,"context_line":""}],"source_content_type":"text/x-python","patch_set":43,"id":"baada198_1a33e0ab","line":573,"updated":"2014-07-11 19:13:45.000000000","message":"this isn\u0027t tested.","commit_id":"0d66ff6e98f3edc636700db94a73726febc77b14"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"9a10e28adf939f42d3cc650c50ad745d6f682da0","unresolved":false,"context_lines":[{"line_number":598,"context_line":"            token_ref \u003d self.token_api.get_token(context[\u0027token_id\u0027])"},{"line_number":599,"context_line":"        except exception.KeyError:"},{"line_number":600,"context_line":"            # This might happen if we use the Admin token, for instance"},{"line_number":601,"context_line":"            raise exception.ValidationError("},{"line_number":602,"context_line":"                _(\u0027A domain-scoped token must be used\u0027))"},{"line_number":603,"context_line":"        except exception.TokenNotFound:"},{"line_number":604,"context_line":"            LOG.warning(_(\u0027Invalid token found while getting domain ID \u0027"}],"source_content_type":"text/x-python","patch_set":43,"id":"baada198_9a24500e","line":601,"updated":"2014-07-11 19:13:45.000000000","message":"this isn\u0027t being tested","commit_id":"0d66ff6e98f3edc636700db94a73726febc77b14"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"9a10e28adf939f42d3cc650c50ad745d6f682da0","unresolved":false,"context_lines":[{"line_number":601,"context_line":"            raise exception.ValidationError("},{"line_number":602,"context_line":"                _(\u0027A domain-scoped token must be used\u0027))"},{"line_number":603,"context_line":"        except exception.TokenNotFound:"},{"line_number":604,"context_line":"            LOG.warning(_(\u0027Invalid token found while getting domain ID \u0027"},{"line_number":605,"context_line":"                          \u0027for list request\u0027))"},{"line_number":606,"context_line":"            raise exception.Unauthorized()"},{"line_number":607,"context_line":""}],"source_content_type":"text/x-python","patch_set":43,"id":"baada198_3acfc42a","line":604,"updated":"2014-07-11 19:13:45.000000000","message":"this isn\u0027t being tested.","commit_id":"0d66ff6e98f3edc636700db94a73726febc77b14"}],"keystone/common/sql/migrate_repo/versions/041_add_id_mapping.py":[{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"1bc3b7eae33ff9c2c325d186d121a0205fa52d1d","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import sqlalchemy as sql"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"MAPPING_TABLE \u003d \u0027id_mapping\u0027"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"7adec928_81e1dc00","line":15,"updated":"2014-05-20 18:20:01.000000000","message":"Iwould prefer doing the mapping in an extension.  It will both prevent us from conflicting on migrations,. and allof for an eeventually \"no-persist\" approach.","commit_id":"82e2543e25b95296f3b9c95fa3b4c2ccec873052"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"60b9d8d83c7b9e92c86df79971ae5b4f8fa8abe1","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import sqlalchemy as sql"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"MAPPING_TABLE \u003d \u0027id_mapping\u0027"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"3ae8d1ca_a6addc33","line":15,"in_reply_to":"7adec928_81e1dc00","updated":"2014-06-02 08:48:30.000000000","message":"Let\u0027s discuss this on irc - the no-perist approach could obviously be implemented as a mapping_backend driver with the structure supported by this patch, allowing for eventual removal of the table if necessary.","commit_id":"82e2543e25b95296f3b9c95fa3b4c2ccec873052"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"1bc3b7eae33ff9c2c325d186d121a0205fa52d1d","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    mapping_table \u003d sql.Table("},{"line_number":26,"context_line":"        MAPPING_TABLE,"},{"line_number":27,"context_line":"        meta,"},{"line_number":28,"context_line":"        sql.Column(\u0027public_id\u0027, sql.String(64), primary_key\u003dTrue),"},{"line_number":29,"context_line":"        sql.Column(\u0027domain_id\u0027, sql.String(64), sql.ForeignKey(\u0027domain.id\u0027),"},{"line_number":30,"context_line":"                   nullable\u003dFalse),"},{"line_number":31,"context_line":"        sql.Column(\u0027local_id\u0027, sql.String(64), nullable\u003dFalse))"}],"source_content_type":"text/x-python","patch_set":21,"id":"7adec928_81b8fce6","line":28,"updated":"2014-05-20 18:20:01.000000000","message":"We need a type field to distinguish between users and groups.  Many LDAP systems give a every user a group with the same name.","commit_id":"82e2543e25b95296f3b9c95fa3b4c2ccec873052"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"60b9d8d83c7b9e92c86df79971ae5b4f8fa8abe1","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    mapping_table \u003d sql.Table("},{"line_number":26,"context_line":"        MAPPING_TABLE,"},{"line_number":27,"context_line":"        meta,"},{"line_number":28,"context_line":"        sql.Column(\u0027public_id\u0027, sql.String(64), primary_key\u003dTrue),"},{"line_number":29,"context_line":"        sql.Column(\u0027domain_id\u0027, sql.String(64), sql.ForeignKey(\u0027domain.id\u0027),"},{"line_number":30,"context_line":"                   nullable\u003dFalse),"},{"line_number":31,"context_line":"        sql.Column(\u0027local_id\u0027, sql.String(64), nullable\u003dFalse))"}],"source_content_type":"text/x-python","patch_set":21,"id":"3ae8d1ca_e6a7e44d","line":28,"in_reply_to":"7adec928_81b8fce6","updated":"2014-06-02 08:48:30.000000000","message":"Good idea.  Done.","commit_id":"82e2543e25b95296f3b9c95fa3b4c2ccec873052"}],"keystone/common/sql/migrate_repo/versions/041_identity_uuid_length.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"8ee443030e3c8514f5892dfc99ce2887a25ea071","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    meta \u003d sql.MetaData()"},{"line_number":24,"context_line":"    meta.bind \u003d migrate_engine"},{"line_number":25,"context_line":"    upgrade_table \u003d sql.Table(\u0027user\u0027, meta, autoload\u003dTrue)"},{"line_number":26,"context_line":"    upgrade_table.c.id.alter(type\u003didentity_sql.ENTITY_ID_TYPE)"},{"line_number":27,"context_line":"    upgrade_table \u003d sql.Table(\u0027group\u0027, meta, autoload\u003dTrue)"},{"line_number":28,"context_line":"    upgrade_table.c.id.alter(type\u003didentity_sql.ENTITY_ID_TYPE)"},{"line_number":29,"context_line":"    upgrade_table \u003d sql.Table(\u0027user_group_membership\u0027, meta, autoload\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2FmZI%3D","line":26,"updated":"2014-02-25 18:25:24.000000000","message":"don\u0027t import constants like this into a migration - this risks changing the meaning of the migration in the future. define the constants in this module","commit_id":"016eb2481628895e0b8176055ed3c19fc6149348"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"0c0ac3e7ee1257b823fcda4292dfca3156173f8b","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    meta \u003d sql.MetaData()"},{"line_number":24,"context_line":"    meta.bind \u003d migrate_engine"},{"line_number":25,"context_line":"    upgrade_table \u003d sql.Table(\u0027user\u0027, meta, autoload\u003dTrue)"},{"line_number":26,"context_line":"    upgrade_table.c.id.alter(type\u003didentity_sql.ENTITY_ID_TYPE)"},{"line_number":27,"context_line":"    upgrade_table \u003d sql.Table(\u0027group\u0027, meta, autoload\u003dTrue)"},{"line_number":28,"context_line":"    upgrade_table.c.id.alter(type\u003didentity_sql.ENTITY_ID_TYPE)"},{"line_number":29,"context_line":"    upgrade_table \u003d sql.Table(\u0027user_group_membership\u0027, meta, autoload\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2FlP4%3D","line":26,"in_reply_to":"AAAAU3%2F%2FmZI%3D","updated":"2014-02-26 00:47:48.000000000","message":"Ah, you\u0027re right.  Nice catch.","commit_id":"016eb2481628895e0b8176055ed3c19fc6149348"}],"keystone/exception.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"3d229d3c8b9790a8d152d6187bb7fb18dbd18de9","unresolved":false,"context_lines":[{"line_number":273,"context_line":""},{"line_number":274,"context_line":"class PublicIDNotFound(NotFound):"},{"line_number":275,"context_line":"    # This is used internally and mapped to either User/GroupNotFound or,"},{"line_number":276,"context_line":"    # Assertion before the exception leaves keystone"},{"line_number":277,"context_line":"    message_format \u003d _(\"%(id)s\")"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"1ae5cdf2_04a0259e","line":276,"updated":"2014-06-02 14:19:28.000000000","message":"Keystone*","commit_id":"17250f6ff30d8095dafce967e9f08b235883f645"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"8e8a7512405c3974538dbb64fc09b3420ca63fec","unresolved":false,"context_lines":[{"line_number":273,"context_line":""},{"line_number":274,"context_line":"class PublicIDNotFound(NotFound):"},{"line_number":275,"context_line":"    # This is used internally and mapped to either User/GroupNotFound or,"},{"line_number":276,"context_line":"    # Assertion before the exception leaves keystone"},{"line_number":277,"context_line":"    message_format \u003d _(\"%(id)s\")"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"1ae5cdf2_ddd7e7eb","line":276,"in_reply_to":"1ae5cdf2_04a0259e","updated":"2014-06-03 05:25:04.000000000","message":"Done","commit_id":"17250f6ff30d8095dafce967e9f08b235883f645"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"c9d6fbb545cbf100d377dd0e22acd914bbe38b74","unresolved":false,"context_lines":[{"line_number":279,"context_line":"                       \" IdentityProvider, %(idp_id)s\")"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"class PublicIDNotFound(NotFound):"},{"line_number":283,"context_line":"    # This is used internally and mapped to either User/GroupNotFound or,"},{"line_number":284,"context_line":"    # Assertion before the exception leaves Keystone."},{"line_number":285,"context_line":"    message_format \u003d _(\"%(id)s\")"}],"source_content_type":"text/x-python","patch_set":36,"id":"baada198_5022d0a4","line":282,"updated":"2014-07-02 18:12:48.000000000","message":"This should be removed as it is no longer used","commit_id":"3aa4260930bff38df016ba569aa5f8b5a89eeaf0"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"b00784c2494a8dd53120a800016afccfb7636c8c","unresolved":false,"context_lines":[{"line_number":282,"context_line":"class PublicIDNotFound(NotFound):"},{"line_number":283,"context_line":"    # This is used internally and mapped to either User/GroupNotFound or,"},{"line_number":284,"context_line":"    # Assertion before the exception leaves Keystone."},{"line_number":285,"context_line":"    message_format \u003d _(\"%(id)s\")"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"class Conflict(Error):"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_325b9988","line":285,"updated":"2014-07-10 20:08:45.000000000","message":"Translate from Bavarian using Bing?","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"1338d39d3d1a6c9e6ff2b59cbb1d7c872189e792","unresolved":false,"context_lines":[{"line_number":282,"context_line":"class PublicIDNotFound(NotFound):"},{"line_number":283,"context_line":"    # This is used internally and mapped to either User/GroupNotFound or,"},{"line_number":284,"context_line":"    # Assertion before the exception leaves Keystone."},{"line_number":285,"context_line":"    message_format \u003d _(\"%(id)s\")"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"class Conflict(Error):"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_3ea426a5","line":285,"in_reply_to":"baada198_325b9988","updated":"2014-07-11 15:42:10.000000000","message":"Done","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"}],"keystone/identity/backends/sql.py":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"5ef164da53b5ade0023f26ecaae4cf38daab9f8a","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    __tablename__ \u003d \u0027user\u0027"},{"line_number":31,"context_line":"    attributes \u003d [\u0027id\u0027, \u0027name\u0027, \u0027domain_id\u0027, \u0027password\u0027, \u0027enabled\u0027,"},{"line_number":32,"context_line":"                  \u0027default_project_id\u0027]"},{"line_number":33,"context_line":"    id \u003d sql.Column(sql.String(255), primary_key\u003dTrue)"},{"line_number":34,"context_line":"    name \u003d sql.Column(sql.String(255), nullable\u003dFalse)"},{"line_number":35,"context_line":"    domain_id \u003d sql.Column(sql.String(64), sql.ForeignKey(\u0027domain.id\u0027),"},{"line_number":36,"context_line":"                           nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUX%2F%2Bzwc%3D","line":33,"updated":"2014-02-18 22:03:29.000000000","message":"Does it make sense to create a sql.String(255) item called \"uuid\" and use that universally across all \"uuid\" columns.  Meaning that we can avoid needing to change quite the same volume of locations in the case we want to adjust the data type again in the future (you\u0027re already changing all of them)","commit_id":"3b3e1aecfd9f3fd63526563825f1fdbe3b30126a"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"5e5e7e1281372b9ee39e7a9bd3a2427ba47aeb26","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    __tablename__ \u003d \u0027user\u0027"},{"line_number":31,"context_line":"    attributes \u003d [\u0027id\u0027, \u0027name\u0027, \u0027domain_id\u0027, \u0027password\u0027, \u0027enabled\u0027,"},{"line_number":32,"context_line":"                  \u0027default_project_id\u0027]"},{"line_number":33,"context_line":"    id \u003d sql.Column(sql.String(255), primary_key\u003dTrue)"},{"line_number":34,"context_line":"    name \u003d sql.Column(sql.String(255), nullable\u003dFalse)"},{"line_number":35,"context_line":"    domain_id \u003d sql.Column(sql.String(64), sql.ForeignKey(\u0027domain.id\u0027),"},{"line_number":36,"context_line":"                           nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUX%2F%2BzkI%3D","line":33,"in_reply_to":"AAAAUX%2F%2Bzwc%3D","updated":"2014-02-18 22:20:17.000000000","message":"good idea","commit_id":"3b3e1aecfd9f3fd63526563825f1fdbe3b30126a"}],"keystone/identity/controllers.py":[{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"c5f74f2b35fd4be2f0787482de24f8167446b0e9","unresolved":false,"context_lines":[{"line_number":333,"context_line":""},{"line_number":334,"context_line":"        try:"},{"line_number":335,"context_line":"            self.identity_api.authenticate(user_id\u003duser_id,"},{"line_number":336,"context_line":"                                           password\u003doriginal_password)"},{"line_number":337,"context_line":"        except AssertionError:"},{"line_number":338,"context_line":"            raise exception.Unauthorized()"},{"line_number":339,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2B87o%3D","line":336,"updated":"2014-02-18 01:43:58.000000000","message":"This looks like a merge problem","commit_id":"1ec4bd401add8237c4fa24745e29801bec7ea77a"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"c5f74f2b35fd4be2f0787482de24f8167446b0e9","unresolved":false,"context_lines":[{"line_number":338,"context_line":"            raise exception.Unauthorized()"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"        update_dict \u003d {\u0027password\u0027: password}"},{"line_number":341,"context_line":"        self._update_user(context, user_id, update_dict)"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"@dependency.requires(\u0027identity_api\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2B87k%3D","line":341,"updated":"2014-02-18 01:43:58.000000000","message":"ditto","commit_id":"1ec4bd401add8237c4fa24745e29801bec7ea77a"}],"keystone/identity/core.py":[{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"c5f74f2b35fd4be2f0787482de24f8167446b0e9","unresolved":false,"context_lines":[{"line_number":355,"context_line":""},{"line_number":356,"context_line":"    @manager.response_truncated"},{"line_number":357,"context_line":"    @domains_configured"},{"line_number":358,"context_line":"    # Do we need to convert filters?"},{"line_number":359,"context_line":"    def list_users(self, domain_scope\u003dNone, hints\u003dNone):"},{"line_number":360,"context_line":"        driver \u003d self._select_identity_driver(domain_scope)"},{"line_number":361,"context_line":"        hints \u003d hints or driver_hints.Hints()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2B87E%3D","line":358,"updated":"2014-02-18 01:43:58.000000000","message":"remove comment, no we don\u0027t","commit_id":"1ec4bd401add8237c4fa24745e29801bec7ea77a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a14323dbd7782ffb0dabc96d3d11d20bcc317a6e","unresolved":false,"context_lines":[{"line_number":226,"context_line":""},{"line_number":227,"context_line":"    def _assign_domain_specific_unique_id(self, ref):"},{"line_number":228,"context_line":"        return ref"},{"line_number":229,"context_line":"        if \u0027domain_id\u0027 not in ref:"},{"line_number":230,"context_line":"            raise exception.ValidationError("},{"line_number":231,"context_line":"                _(\u0027domain_id is required as part of entity\u0027))"},{"line_number":232,"context_line":"        ref[\u0027id\u0027] \u003d ref[\u0027id\u0027] + COMPOSITE_ID_SEPERATOR + ref[\u0027domain_id\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUX%2F%2BkAI%3D","line":229,"updated":"2014-02-20 14:07:48.000000000","message":"this code isn\u0027t going to be called since returned at line 228. Remove unreachable code.","commit_id":"93070ea459261d1b76518882fe3c98378770a146"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"38376c0b638aca68695a564ea4bdacc05145ddb9","unresolved":false,"context_lines":[{"line_number":226,"context_line":""},{"line_number":227,"context_line":"    def _assign_domain_specific_unique_id(self, ref):"},{"line_number":228,"context_line":"        return ref"},{"line_number":229,"context_line":"        if \u0027domain_id\u0027 not in ref:"},{"line_number":230,"context_line":"            raise exception.ValidationError("},{"line_number":231,"context_line":"                _(\u0027domain_id is required as part of entity\u0027))"},{"line_number":232,"context_line":"        ref[\u0027id\u0027] \u003d ref[\u0027id\u0027] + COMPOSITE_ID_SEPERATOR + ref[\u0027domain_id\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUX%2F%2BSEE%3D","line":229,"in_reply_to":"AAAAUX%2F%2BkAI%3D","updated":"2014-02-22 17:17:41.000000000","message":"this method has now been removed","commit_id":"93070ea459261d1b76518882fe3c98378770a146"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"b62dfb0f155e31976d8855818c06efa423414e85","unresolved":false,"context_lines":[{"line_number":36,"context_line":"CONF \u003d config.CONF"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":39,"context_line":"COMPOSITE_ID_SEPERATOR \u003d \u0027@@\u0027"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"def moved_to_assignment(f):"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAVX%2F%2FobA%3D","line":39,"updated":"2014-03-02 10:51:12.000000000","message":"should remove this","commit_id":"5ae489fe124fa68c445203d00eeb4daa9ddb87f9"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"64e308e677f5f3ff6feb6fc09fc9459b74d137b9","unresolved":false,"context_lines":[{"line_number":279,"context_line":"        \"\"\""},{"line_number":280,"context_line":"        conf \u003d CONF.identity"},{"line_number":281,"context_line":"        if (driver \u003d\u003d self.driver and driver._generates_uuids() and"},{"line_number":282,"context_line":"                driver._is_domain_aware()):"},{"line_number":283,"context_line":"            # The default driver that needs no help, e.g. SQL"},{"line_number":284,"context_line":"            return ref"},{"line_number":285,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAVn%2F%2F32A%3D","line":282,"updated":"2014-03-03 17:57:01.000000000","message":"don\u0027t call private methods on foreign objects like this","commit_id":"8939895c42c7c4a4230d7877afdcb7b5c42c10ab"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"77dcf91a829cd92c47e4158ef05274de0dd933c8","unresolved":false,"context_lines":[{"line_number":279,"context_line":"        \"\"\""},{"line_number":280,"context_line":"        conf \u003d CONF.identity"},{"line_number":281,"context_line":"        if (driver \u003d\u003d self.driver and driver._generates_uuids() and"},{"line_number":282,"context_line":"                driver._is_domain_aware()):"},{"line_number":283,"context_line":"            # The default driver that needs no help, e.g. SQL"},{"line_number":284,"context_line":"            return ref"},{"line_number":285,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAVn%2F%2F25Y%3D","line":282,"in_reply_to":"AAAAVn%2F%2F32A%3D","updated":"2014-03-03 20:14:36.000000000","message":"Done","commit_id":"8939895c42c7c4a4230d7877afdcb7b5c42c10ab"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"3d229d3c8b9790a8d152d6187bb7fb18dbd18de9","unresolved":false,"context_lines":[{"line_number":385,"context_line":"                                         exception_to_raise\u003dNone):"},{"line_number":386,"context_line":"        \"\"\"Look up details using the public ID."},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"        :param public_id: the ID provided in the call"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"        :returns: the domain_id, the driver selected based on this domain and"},{"line_number":391,"context_line":"                  the entity_id which will be understood by the driver."}],"source_content_type":"text/x-python","patch_set":23,"id":"1ae5cdf2_275e0313","line":388,"updated":"2014-06-02 14:19:28.000000000","message":"nit: exception_to_raise param doc string","commit_id":"17250f6ff30d8095dafce967e9f08b235883f645"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"8e8a7512405c3974538dbb64fc09b3420ca63fec","unresolved":false,"context_lines":[{"line_number":385,"context_line":"                                         exception_to_raise\u003dNone):"},{"line_number":386,"context_line":"        \"\"\"Look up details using the public ID."},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"        :param public_id: the ID provided in the call"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"        :returns: the domain_id, the driver selected based on this domain and"},{"line_number":391,"context_line":"                  the entity_id which will be understood by the driver."}],"source_content_type":"text/x-python","patch_set":23,"id":"1ae5cdf2_5d9e7757","line":388,"in_reply_to":"1ae5cdf2_275e0313","updated":"2014-06-03 05:25:04.000000000","message":"actually, the param should be ditched!  Good catch.","commit_id":"17250f6ff30d8095dafce967e9f08b235883f645"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"f3c9df41dfe865fa55c488d863b0e41c3d7a658f","unresolved":false,"context_lines":[{"line_number":198,"context_line":"                elif exception_type \u003d\u003d \u0027assertion\u0027:"},{"line_number":199,"context_line":"                    raise AssertionError(_(\u0027Invalid user / password\u0027))"},{"line_number":200,"context_line":"                else:"},{"line_number":201,"context_line":"                    raise e"},{"line_number":202,"context_line":"        return wrapper"},{"line_number":203,"context_line":"    return _exception_mapped"},{"line_number":204,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"1ae5cdf2_d1bb22e3","line":201,"updated":"2014-06-11 14:32:13.000000000","message":"Should this just be raise to get the original stack?","commit_id":"befaba09d523c08cf7fcb02eb6897f8d05ed6905"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"dfe15c2617fe2929d271e731ece212c10f2faefc","unresolved":false,"context_lines":[{"line_number":198,"context_line":"                elif exception_type \u003d\u003d \u0027assertion\u0027:"},{"line_number":199,"context_line":"                    raise AssertionError(_(\u0027Invalid user / password\u0027))"},{"line_number":200,"context_line":"                else:"},{"line_number":201,"context_line":"                    raise e"},{"line_number":202,"context_line":"        return wrapper"},{"line_number":203,"context_line":"    return _exception_mapped"},{"line_number":204,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"1ae5cdf2_9146fabe","line":201,"in_reply_to":"1ae5cdf2_d1bb22e3","updated":"2014-06-11 14:35:46.000000000","message":"++","commit_id":"befaba09d523c08cf7fcb02eb6897f8d05ed6905"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"b00784c2494a8dd53120a800016afccfb7636c8c","unresolved":false,"context_lines":[{"line_number":183,"context_line":"    return wrapper"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"def exception_mapped(exception_type):"},{"line_number":187,"context_line":"    \"\"\"Wraps API calls to map to correct exception.\"\"\""},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def _exception_mapped(f):"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_bc530238","line":186,"updated":"2014-07-10 20:08:45.000000000","message":"nit: the term \"mapped\" is overloaded here (\"translate_exception\"?); be more specific","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"f588ef56c87a5dda4cc00169896903ce205f553e","unresolved":false,"context_lines":[{"line_number":183,"context_line":"    return wrapper"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"def exception_mapped(exception_type):"},{"line_number":187,"context_line":"    \"\"\"Wraps API calls to map to correct exception.\"\"\""},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def _exception_mapped(f):"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_485b002e","line":186,"in_reply_to":"baada198_bc530238","updated":"2014-07-10 21:09:06.000000000","message":"Done","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"b00784c2494a8dd53120a800016afccfb7636c8c","unresolved":false,"context_lines":[{"line_number":193,"context_line":"                return f(self, *args, **kwargs)"},{"line_number":194,"context_line":"            except exception.PublicIDNotFound as e:"},{"line_number":195,"context_line":"                if exception_type \u003d\u003d \u0027user\u0027:"},{"line_number":196,"context_line":"                    raise exception.UserNotFound(user_id\u003de.message)"},{"line_number":197,"context_line":"                elif exception_type \u003d\u003d \u0027group\u0027:"},{"line_number":198,"context_line":"                    raise exception.GroupNotFound(group_id\u003de.message)"},{"line_number":199,"context_line":"                elif exception_type \u003d\u003d \u0027assertion\u0027:"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_3c3ff2d7","line":196,"updated":"2014-07-10 20:08:45.000000000","message":"e.id?","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"1338d39d3d1a6c9e6ff2b59cbb1d7c872189e792","unresolved":false,"context_lines":[{"line_number":193,"context_line":"                return f(self, *args, **kwargs)"},{"line_number":194,"context_line":"            except exception.PublicIDNotFound as e:"},{"line_number":195,"context_line":"                if exception_type \u003d\u003d \u0027user\u0027:"},{"line_number":196,"context_line":"                    raise exception.UserNotFound(user_id\u003de.message)"},{"line_number":197,"context_line":"                elif exception_type \u003d\u003d \u0027group\u0027:"},{"line_number":198,"context_line":"                    raise exception.GroupNotFound(group_id\u003de.message)"},{"line_number":199,"context_line":"                elif exception_type \u003d\u003d \u0027assertion\u0027:"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_2ef96ac8","line":196,"in_reply_to":"baada198_3c3ff2d7","updated":"2014-07-11 15:42:10.000000000","message":"I think in this case it really is e.message","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"b00784c2494a8dd53120a800016afccfb7636c8c","unresolved":false,"context_lines":[{"line_number":199,"context_line":"                elif exception_type \u003d\u003d \u0027assertion\u0027:"},{"line_number":200,"context_line":"                    raise AssertionError(_(\u0027Invalid user / password\u0027))"},{"line_number":201,"context_line":"                else:"},{"line_number":202,"context_line":"                    raise e"},{"line_number":203,"context_line":"        return wrapper"},{"line_number":204,"context_line":"    return _exception_mapped"},{"line_number":205,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_5c2586c0","line":202,"updated":"2014-07-10 20:08:45.000000000","message":".\n  six.reraise(e)","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"1338d39d3d1a6c9e6ff2b59cbb1d7c872189e792","unresolved":false,"context_lines":[{"line_number":199,"context_line":"                elif exception_type \u003d\u003d \u0027assertion\u0027:"},{"line_number":200,"context_line":"                    raise AssertionError(_(\u0027Invalid user / password\u0027))"},{"line_number":201,"context_line":"                else:"},{"line_number":202,"context_line":"                    raise e"},{"line_number":203,"context_line":"        return wrapper"},{"line_number":204,"context_line":"    return _exception_mapped"},{"line_number":205,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_6ebe0201","line":202,"in_reply_to":"baada198_5c2586c0","updated":"2014-07-11 15:42:10.000000000","message":"Done","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e6c7eb4a740cec45d7bf2ee4dfddf222f82ed617","unresolved":false,"context_lines":[{"line_number":207,"context_line":"@dependency.provider(\u0027identity_api\u0027)"},{"line_number":208,"context_line":"@dependency.optional(\u0027revoke_api\u0027)"},{"line_number":209,"context_line":"@dependency.requires(\u0027assignment_api\u0027, \u0027credential_api\u0027, \u0027token_api\u0027,"},{"line_number":210,"context_line":"                     \u0027id_mapping_api\u0027)"},{"line_number":211,"context_line":"class Manager(manager.Manager):"},{"line_number":212,"context_line":"    \"\"\"Default pivot point for the Identity backend."},{"line_number":213,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_92d625c2","line":210,"updated":"2014-07-10 20:08:04.000000000","message":"keep these in alphabetical order.","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"1338d39d3d1a6c9e6ff2b59cbb1d7c872189e792","unresolved":false,"context_lines":[{"line_number":207,"context_line":"@dependency.provider(\u0027identity_api\u0027)"},{"line_number":208,"context_line":"@dependency.optional(\u0027revoke_api\u0027)"},{"line_number":209,"context_line":"@dependency.requires(\u0027assignment_api\u0027, \u0027credential_api\u0027, \u0027token_api\u0027,"},{"line_number":210,"context_line":"                     \u0027id_mapping_api\u0027)"},{"line_number":211,"context_line":"class Manager(manager.Manager):"},{"line_number":212,"context_line":"    \"\"\"Default pivot point for the Identity backend."},{"line_number":213,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_6e0362b8","line":210,"in_reply_to":"baada198_92d625c2","updated":"2014-07-11 15:42:10.000000000","message":"Done","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"b00784c2494a8dd53120a800016afccfb7636c8c","unresolved":false,"context_lines":[{"line_number":255,"context_line":""},{"line_number":256,"context_line":"    # Domain ID normalization methods"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    def _set_domain_id_and_mapping(self, ref, domain_id, driver,"},{"line_number":259,"context_line":"                                   entity_type):"},{"line_number":260,"context_line":"        \"\"\"Patch the domain_id/public_id into the resulting entity(ies)."},{"line_number":261,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_d7440fb9","line":258,"updated":"2014-07-10 20:08:45.000000000","message":"wishlist: refactor this method to contain two internal functions, one to process lists, and one to process a dict","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"1338d39d3d1a6c9e6ff2b59cbb1d7c872189e792","unresolved":false,"context_lines":[{"line_number":255,"context_line":""},{"line_number":256,"context_line":"    # Domain ID normalization methods"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    def _set_domain_id_and_mapping(self, ref, domain_id, driver,"},{"line_number":259,"context_line":"                                   entity_type):"},{"line_number":260,"context_line":"        \"\"\"Patch the domain_id/public_id into the resulting entity(ies)."},{"line_number":261,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_e0bda869","line":258,"in_reply_to":"baada198_d7440fb9","updated":"2014-07-11 15:42:10.000000000","message":"will come back in and do this...","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e6c7eb4a740cec45d7bf2ee4dfddf222f82ed617","unresolved":false,"context_lines":[{"line_number":284,"context_line":""},{"line_number":285,"context_line":"        \"\"\""},{"line_number":286,"context_line":"        conf \u003d CONF.identity"},{"line_number":287,"context_line":"        if (driver \u003d\u003d self.driver and driver.generates_uuids() and"},{"line_number":288,"context_line":"                driver.is_domain_aware()):"},{"line_number":289,"context_line":"            # The default driver that needs no help, e.g. SQL"},{"line_number":290,"context_line":"            return ref"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_b7587b57","line":287,"updated":"2014-07-10 20:08:04.000000000","message":"use \"is\" when comparing driver references then it\u0027s more obvious that we\u0027re comparing by identity.","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"1338d39d3d1a6c9e6ff2b59cbb1d7c872189e792","unresolved":false,"context_lines":[{"line_number":284,"context_line":""},{"line_number":285,"context_line":"        \"\"\""},{"line_number":286,"context_line":"        conf \u003d CONF.identity"},{"line_number":287,"context_line":"        if (driver \u003d\u003d self.driver and driver.generates_uuids() and"},{"line_number":288,"context_line":"                driver.is_domain_aware()):"},{"line_number":289,"context_line":"            # The default driver that needs no help, e.g. SQL"},{"line_number":290,"context_line":"            return ref"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_aed3ba36","line":287,"in_reply_to":"baada198_b7587b57","updated":"2014-07-11 15:42:10.000000000","message":"Done","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e6c7eb4a740cec45d7bf2ee4dfddf222f82ed617","unresolved":false,"context_lines":[{"line_number":296,"context_line":"                  \u0027Compatible IDs: %(compat)s\u0027,"},{"line_number":297,"context_line":"                  {\u0027aware\u0027: driver.is_domain_aware(),"},{"line_number":298,"context_line":"                   \u0027generate\u0027: driver.generates_uuids(),"},{"line_number":299,"context_line":"                   \u0027compat\u0027: CONF.identity_mapping.backward_compatible_ids})"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"        if isinstance(ref, dict):"},{"line_number":302,"context_line":"            LOG.debug(\u0027Local ID: %s\u0027, ref[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_171cc776","line":299,"updated":"2014-07-10 20:08:04.000000000","message":"I\u0027d rather the debugs were on one line.","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"1338d39d3d1a6c9e6ff2b59cbb1d7c872189e792","unresolved":false,"context_lines":[{"line_number":296,"context_line":"                  \u0027Compatible IDs: %(compat)s\u0027,"},{"line_number":297,"context_line":"                  {\u0027aware\u0027: driver.is_domain_aware(),"},{"line_number":298,"context_line":"                   \u0027generate\u0027: driver.generates_uuids(),"},{"line_number":299,"context_line":"                   \u0027compat\u0027: CONF.identity_mapping.backward_compatible_ids})"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"        if isinstance(ref, dict):"},{"line_number":302,"context_line":"            LOG.debug(\u0027Local ID: %s\u0027, ref[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_8ea8b678","line":299,"in_reply_to":"baada198_171cc776","updated":"2014-07-11 15:42:10.000000000","message":"Done","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"b00784c2494a8dd53120a800016afccfb7636c8c","unresolved":false,"context_lines":[{"line_number":305,"context_line":"            # None that means we are running in a single backend mode, so to"},{"line_number":306,"context_line":"            # remain backwardly compatible, we put in the default domain ID."},{"line_number":307,"context_line":"            if not driver.is_domain_aware():"},{"line_number":308,"context_line":"                ref \u003d ref.copy()"},{"line_number":309,"context_line":"                if domain_id is None:"},{"line_number":310,"context_line":"                    domain_id \u003d conf.default_domain_id"},{"line_number":311,"context_line":"                ref[\u0027domain_id\u0027] \u003d domain_id"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_d7e08f98","line":308,"updated":"2014-07-10 20:08:45.000000000","message":"this method should either always copy the ref, or never. either move the .copy() to the top of the method or remove it.\n\nif the copy is just for tests - the tests should do the copy themselves and expect the ref to be mutated (you don\u0027t need to do all these copies in a production environment, as it only wastes memory) \u003c-- this issue is sort of out of scope for this patch, and is a broader, existing issue","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"1338d39d3d1a6c9e6ff2b59cbb1d7c872189e792","unresolved":false,"context_lines":[{"line_number":305,"context_line":"            # None that means we are running in a single backend mode, so to"},{"line_number":306,"context_line":"            # remain backwardly compatible, we put in the default domain ID."},{"line_number":307,"context_line":"            if not driver.is_domain_aware():"},{"line_number":308,"context_line":"                ref \u003d ref.copy()"},{"line_number":309,"context_line":"                if domain_id is None:"},{"line_number":310,"context_line":"                    domain_id \u003d conf.default_domain_id"},{"line_number":311,"context_line":"                ref[\u0027domain_id\u0027] \u003d domain_id"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_29c40491","line":308,"in_reply_to":"baada198_d7e08f98","updated":"2014-07-11 15:42:10.000000000","message":"Done","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e6c7eb4a740cec45d7bf2ee4dfddf222f82ed617","unresolved":false,"context_lines":[{"line_number":316,"context_line":"            # The exception to the above is that we must honor backward"},{"line_number":317,"context_line":"            # compatibility if this is the default driver (e.g. to support"},{"line_number":318,"context_line":"            # current LDAP)"},{"line_number":319,"context_line":"            if (driver !\u003d self.driver or"},{"line_number":320,"context_line":"                (driver \u003d\u003d self.driver and not driver.generates_uuids() and"},{"line_number":321,"context_line":"                    not CONF.identity_mapping.backward_compatible_ids)):"},{"line_number":322,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_17676726","line":319,"updated":"2014-07-10 20:08:04.000000000","message":"use \"is not\" when comparing driver references then it\u0027s more obvious that we\u0027re comparing by identity.","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"1338d39d3d1a6c9e6ff2b59cbb1d7c872189e792","unresolved":false,"context_lines":[{"line_number":316,"context_line":"            # The exception to the above is that we must honor backward"},{"line_number":317,"context_line":"            # compatibility if this is the default driver (e.g. to support"},{"line_number":318,"context_line":"            # current LDAP)"},{"line_number":319,"context_line":"            if (driver !\u003d self.driver or"},{"line_number":320,"context_line":"                (driver \u003d\u003d self.driver and not driver.generates_uuids() and"},{"line_number":321,"context_line":"                    not CONF.identity_mapping.backward_compatible_ids)):"},{"line_number":322,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_2ee7aa13","line":319,"in_reply_to":"baada198_17676726","updated":"2014-07-11 15:42:10.000000000","message":"Done","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"b00784c2494a8dd53120a800016afccfb7636c8c","unresolved":false,"context_lines":[{"line_number":317,"context_line":"            # compatibility if this is the default driver (e.g. to support"},{"line_number":318,"context_line":"            # current LDAP)"},{"line_number":319,"context_line":"            if (driver !\u003d self.driver or"},{"line_number":320,"context_line":"                (driver \u003d\u003d self.driver and not driver.generates_uuids() and"},{"line_number":321,"context_line":"                    not CONF.identity_mapping.backward_compatible_ids)):"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"                local_entity \u003d {\u0027domain_id\u0027: ref[\u0027domain_id\u0027],"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_b7931bf9","line":320,"updated":"2014-07-10 20:08:45.000000000","message":"the driver \u003d\u003d self.driver is going to make topol redundant","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"1338d39d3d1a6c9e6ff2b59cbb1d7c872189e792","unresolved":false,"context_lines":[{"line_number":317,"context_line":"            # compatibility if this is the default driver (e.g. to support"},{"line_number":318,"context_line":"            # current LDAP)"},{"line_number":319,"context_line":"            if (driver !\u003d self.driver or"},{"line_number":320,"context_line":"                (driver \u003d\u003d self.driver and not driver.generates_uuids() and"},{"line_number":321,"context_line":"                    not CONF.identity_mapping.backward_compatible_ids)):"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"                local_entity \u003d {\u0027domain_id\u0027: ref[\u0027domain_id\u0027],"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_6ef1a2cc","line":320,"in_reply_to":"baada198_b7931bf9","updated":"2014-07-11 15:42:10.000000000","message":"Done","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"b00784c2494a8dd53120a800016afccfb7636c8c","unresolved":false,"context_lines":[{"line_number":365,"context_line":"        if domain_id is None:"},{"line_number":366,"context_line":"            driver \u003d self.driver"},{"line_number":367,"context_line":"        else:"},{"line_number":368,"context_line":"            driver \u003d self.domain_configs.get_domain_driver(domain_id)"},{"line_number":369,"context_line":"            if driver is None:"},{"line_number":370,"context_line":"                driver \u003d self.driver"},{"line_number":371,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_d7532f37","line":368,"updated":"2014-07-10 20:08:45.000000000","message":"... or self.driver\n\nand then the next two lines can go away","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"1338d39d3d1a6c9e6ff2b59cbb1d7c872189e792","unresolved":false,"context_lines":[{"line_number":365,"context_line":"        if domain_id is None:"},{"line_number":366,"context_line":"            driver \u003d self.driver"},{"line_number":367,"context_line":"        else:"},{"line_number":368,"context_line":"            driver \u003d self.domain_configs.get_domain_driver(domain_id)"},{"line_number":369,"context_line":"            if driver is None:"},{"line_number":370,"context_line":"                driver \u003d self.driver"},{"line_number":371,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_eeb69289","line":368,"in_reply_to":"baada198_d7532f37","updated":"2014-07-11 15:42:10.000000000","message":"Done","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"b00784c2494a8dd53120a800016afccfb7636c8c","unresolved":false,"context_lines":[{"line_number":375,"context_line":"        # domain is anything other than None or the default domain."},{"line_number":376,"context_line":"        if (not driver.is_domain_aware() and driver \u003d\u003d self.driver and"},{"line_number":377,"context_line":"            domain_id !\u003d CONF.identity.default_domain_id and"},{"line_number":378,"context_line":"                domain_id is not None):"},{"line_number":379,"context_line":"                    raise exception.DomainNotFound(domain_id\u003ddomain_id)"},{"line_number":380,"context_line":"        return driver"},{"line_number":381,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_d22fbd86","line":378,"updated":"2014-07-10 20:08:45.000000000","message":"wondering if this should at least log a warning, if not raise a 500 and fail completely (this is fatally bad configuration?)","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"1338d39d3d1a6c9e6ff2b59cbb1d7c872189e792","unresolved":false,"context_lines":[{"line_number":375,"context_line":"        # domain is anything other than None or the default domain."},{"line_number":376,"context_line":"        if (not driver.is_domain_aware() and driver \u003d\u003d self.driver and"},{"line_number":377,"context_line":"            domain_id !\u003d CONF.identity.default_domain_id and"},{"line_number":378,"context_line":"                domain_id is not None):"},{"line_number":379,"context_line":"                    raise exception.DomainNotFound(domain_id\u003ddomain_id)"},{"line_number":380,"context_line":"        return driver"},{"line_number":381,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_dd6b37b7","line":378,"in_reply_to":"baada198_d22fbd86","updated":"2014-07-11 15:42:10.000000000","message":"Done","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"9c5ffe35109b7c42ad801404304b16dfcef9db5b","unresolved":false,"context_lines":[{"line_number":384,"context_line":""},{"line_number":385,"context_line":"        :param public_id: the ID provided in the call"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"        :returns: the domain_id, the driver selected based on this domain and"},{"line_number":388,"context_line":"                  the entity_id which will be understood by the driver."},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"        Use the mapping table to look up the domain, driver and local entity"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_176207ad","line":387,"updated":"2014-07-10 20:08:52.000000000","message":"nit \nput a comma between \u0027domain\u0027 and \u0027and\u0027 as that changes how this sentence parses;  as written it implies only two values are returned.","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"1338d39d3d1a6c9e6ff2b59cbb1d7c872189e792","unresolved":false,"context_lines":[{"line_number":384,"context_line":""},{"line_number":385,"context_line":"        :param public_id: the ID provided in the call"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"        :returns: the domain_id, the driver selected based on this domain and"},{"line_number":388,"context_line":"                  the entity_id which will be understood by the driver."},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"        Use the mapping table to look up the domain, driver and local entity"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_49aa18d3","line":387,"in_reply_to":"baada198_176207ad","updated":"2014-07-11 15:42:10.000000000","message":"Done","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"b00784c2494a8dd53120a800016afccfb7636c8c","unresolved":false,"context_lines":[{"line_number":385,"context_line":"        :param public_id: the ID provided in the call"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"        :returns: the domain_id, the driver selected based on this domain and"},{"line_number":388,"context_line":"                  the entity_id which will be understood by the driver."},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"        Use the mapping table to look up the domain, driver and local entity"},{"line_number":391,"context_line":"        that is represented by the provided public ID.  Handle the situations"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_17d4c745","line":388,"updated":"2014-07-10 20:08:45.000000000","message":"nit: put each of the three items in the tuple on their own lines?","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"1338d39d3d1a6c9e6ff2b59cbb1d7c872189e792","unresolved":false,"context_lines":[{"line_number":385,"context_line":"        :param public_id: the ID provided in the call"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"        :returns: the domain_id, the driver selected based on this domain and"},{"line_number":388,"context_line":"                  the entity_id which will be understood by the driver."},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"        Use the mapping table to look up the domain, driver and local entity"},{"line_number":391,"context_line":"        that is represented by the provided public ID.  Handle the situations"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_1d692fbe","line":388,"in_reply_to":"baada198_17d4c745","updated":"2014-07-11 15:42:10.000000000","message":"Done","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"b00784c2494a8dd53120a800016afccfb7636c8c","unresolved":false,"context_lines":[{"line_number":417,"context_line":"                # No mapping required, and the driver can handle the domain"},{"line_number":418,"context_line":"                # information itself.  The classic case of this is the"},{"line_number":419,"context_line":"                # current SQL driver."},{"line_number":420,"context_line":"                return(None, driver, public_id)"},{"line_number":421,"context_line":"            else:"},{"line_number":422,"context_line":"                # Although we don\u0027t have any drivers of this type, i.e. that"},{"line_number":423,"context_line":"                # understand UUIDs but not domains, conceptually you could."}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_77afc3e3","line":420,"updated":"2014-07-10 20:08:45.000000000","message":"nit: space between the \u0027return\u0027 keyword and the returned tuple?","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"1338d39d3d1a6c9e6ff2b59cbb1d7c872189e792","unresolved":false,"context_lines":[{"line_number":417,"context_line":"                # No mapping required, and the driver can handle the domain"},{"line_number":418,"context_line":"                # information itself.  The classic case of this is the"},{"line_number":419,"context_line":"                # current SQL driver."},{"line_number":420,"context_line":"                return(None, driver, public_id)"},{"line_number":421,"context_line":"            else:"},{"line_number":422,"context_line":"                # Although we don\u0027t have any drivers of this type, i.e. that"},{"line_number":423,"context_line":"                # understand UUIDs but not domains, conceptually you could."}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_3d66f3ed","line":420,"in_reply_to":"baada198_77afc3e3","updated":"2014-07-11 15:42:10.000000000","message":"Done","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"b00784c2494a8dd53120a800016afccfb7636c8c","unresolved":false,"context_lines":[{"line_number":447,"context_line":"        # which case we leave this to the caller to check."},{"line_number":448,"context_line":"        return(conf.default_domain_id, driver, public_id)"},{"line_number":449,"context_line":""},{"line_number":450,"context_line":"    def _check_user_and_group_in_same_backend("},{"line_number":451,"context_line":"            self, user_entity_id, user_driver, group_entity_id, group_driver):"},{"line_number":452,"context_line":"        if user_driver !\u003d group_driver:"},{"line_number":453,"context_line":"            # Determine first if either IDs don\u0027t exist by calling"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_b7c87b75","line":450,"updated":"2014-07-10 20:08:45.000000000","message":"wishlist(ayoung): try to relax this constraint","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"1338d39d3d1a6c9e6ff2b59cbb1d7c872189e792","unresolved":false,"context_lines":[{"line_number":447,"context_line":"        # which case we leave this to the caller to check."},{"line_number":448,"context_line":"        return(conf.default_domain_id, driver, public_id)"},{"line_number":449,"context_line":""},{"line_number":450,"context_line":"    def _check_user_and_group_in_same_backend("},{"line_number":451,"context_line":"            self, user_entity_id, user_driver, group_entity_id, group_driver):"},{"line_number":452,"context_line":"        if user_driver !\u003d group_driver:"},{"line_number":453,"context_line":"            # Determine first if either IDs don\u0027t exist by calling"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_a0a7304f","line":450,"in_reply_to":"baada198_b7c87b75","updated":"2014-07-11 15:42:10.000000000","message":"will consider this for  follow up","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":10873,"name":"Juan Antonio Osorio Robles","email":"jaosorior@redhat.com","username":"ejuaoso"},"change_message_id":"728b4902f404056191cc5d58e1a36130ac847707","unresolved":false,"context_lines":[{"line_number":448,"context_line":"        return(conf.default_domain_id, driver, public_id)"},{"line_number":449,"context_line":""},{"line_number":450,"context_line":"    def _check_user_and_group_in_same_backend("},{"line_number":451,"context_line":"            self, user_entity_id, user_driver, group_entity_id, group_driver):"},{"line_number":452,"context_line":"        if user_driver !\u003d group_driver:"},{"line_number":453,"context_line":"            # Determine first if either IDs don\u0027t exist by calling"},{"line_number":454,"context_line":"            # the driver.get methods (which will raise the appropriate"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_57babf6e","line":451,"updated":"2014-07-10 19:39:31.000000000","message":"Could you change the word \"check\" for \"assert\"? it expresses the logic of this function better.","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"b00784c2494a8dd53120a800016afccfb7636c8c","unresolved":false,"context_lines":[{"line_number":448,"context_line":"        return(conf.default_domain_id, driver, public_id)"},{"line_number":449,"context_line":""},{"line_number":450,"context_line":"    def _check_user_and_group_in_same_backend("},{"line_number":451,"context_line":"            self, user_entity_id, user_driver, group_entity_id, group_driver):"},{"line_number":452,"context_line":"        if user_driver !\u003d group_driver:"},{"line_number":453,"context_line":"            # Determine first if either IDs don\u0027t exist by calling"},{"line_number":454,"context_line":"            # the driver.get methods (which will raise the appropriate"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_575c7fed","line":451,"updated":"2014-07-10 20:08:45.000000000","message":"docstr: either returns None if valid, or raises an exception","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"1338d39d3d1a6c9e6ff2b59cbb1d7c872189e792","unresolved":false,"context_lines":[{"line_number":448,"context_line":"        return(conf.default_domain_id, driver, public_id)"},{"line_number":449,"context_line":""},{"line_number":450,"context_line":"    def _check_user_and_group_in_same_backend("},{"line_number":451,"context_line":"            self, user_entity_id, user_driver, group_entity_id, group_driver):"},{"line_number":452,"context_line":"        if user_driver !\u003d group_driver:"},{"line_number":453,"context_line":"            # Determine first if either IDs don\u0027t exist by calling"},{"line_number":454,"context_line":"            # the driver.get methods (which will raise the appropriate"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_ae79fafd","line":451,"in_reply_to":"baada198_575c7fed","updated":"2014-07-11 15:42:10.000000000","message":"Done","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"1338d39d3d1a6c9e6ff2b59cbb1d7c872189e792","unresolved":false,"context_lines":[{"line_number":448,"context_line":"        return(conf.default_domain_id, driver, public_id)"},{"line_number":449,"context_line":""},{"line_number":450,"context_line":"    def _check_user_and_group_in_same_backend("},{"line_number":451,"context_line":"            self, user_entity_id, user_driver, group_entity_id, group_driver):"},{"line_number":452,"context_line":"        if user_driver !\u003d group_driver:"},{"line_number":453,"context_line":"            # Determine first if either IDs don\u0027t exist by calling"},{"line_number":454,"context_line":"            # the driver.get methods (which will raise the appropriate"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_40b9f477","line":451,"in_reply_to":"baada198_57babf6e","updated":"2014-07-11 15:42:10.000000000","message":"Done","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"ee7c56cdca292ac308e186f1d87d4d102dfc30ab","unresolved":false,"context_lines":[{"line_number":449,"context_line":""},{"line_number":450,"context_line":"    def _check_user_and_group_in_same_backend("},{"line_number":451,"context_line":"            self, user_entity_id, user_driver, group_entity_id, group_driver):"},{"line_number":452,"context_line":"        if user_driver !\u003d group_driver:"},{"line_number":453,"context_line":"            # Determine first if either IDs don\u0027t exist by calling"},{"line_number":454,"context_line":"            # the driver.get methods (which will raise the appropriate"},{"line_number":455,"context_line":"            # exception)."}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_178cc734","line":452,"updated":"2014-07-10 19:14:18.000000000","message":"should use \"is not\" here since these are objects. I wouldn\u0027t trust the \u003d\u003d operator.","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"1338d39d3d1a6c9e6ff2b59cbb1d7c872189e792","unresolved":false,"context_lines":[{"line_number":449,"context_line":""},{"line_number":450,"context_line":"    def _check_user_and_group_in_same_backend("},{"line_number":451,"context_line":"            self, user_entity_id, user_driver, group_entity_id, group_driver):"},{"line_number":452,"context_line":"        if user_driver !\u003d group_driver:"},{"line_number":453,"context_line":"            # Determine first if either IDs don\u0027t exist by calling"},{"line_number":454,"context_line":"            # the driver.get methods (which will raise the appropriate"},{"line_number":455,"context_line":"            # exception)."}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_5d5f270f","line":452,"in_reply_to":"baada198_178cc734","updated":"2014-07-11 15:42:10.000000000","message":"Done","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"ee7c56cdca292ac308e186f1d87d4d102dfc30ab","unresolved":false,"context_lines":[{"line_number":452,"context_line":"        if user_driver !\u003d group_driver:"},{"line_number":453,"context_line":"            # Determine first if either IDs don\u0027t exist by calling"},{"line_number":454,"context_line":"            # the driver.get methods (which will raise the appropriate"},{"line_number":455,"context_line":"            # exception)."},{"line_number":456,"context_line":"            user_driver.get_user(user_entity_id)"},{"line_number":457,"context_line":"            group_driver.get_group(group_entity_id)"},{"line_number":458,"context_line":"            # If we get here, then someone is attempting to create a cross"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_f7883324","line":455,"updated":"2014-07-10 19:14:18.000000000","message":"appropriate to what? suggest change this to UserNotFound / GroupNotFound.","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"1338d39d3d1a6c9e6ff2b59cbb1d7c872189e792","unresolved":false,"context_lines":[{"line_number":452,"context_line":"        if user_driver !\u003d group_driver:"},{"line_number":453,"context_line":"            # Determine first if either IDs don\u0027t exist by calling"},{"line_number":454,"context_line":"            # the driver.get methods (which will raise the appropriate"},{"line_number":455,"context_line":"            # exception)."},{"line_number":456,"context_line":"            user_driver.get_user(user_entity_id)"},{"line_number":457,"context_line":"            group_driver.get_group(group_entity_id)"},{"line_number":458,"context_line":"            # If we get here, then someone is attempting to create a cross"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_ce7c6eee","line":455,"in_reply_to":"baada198_f7883324","updated":"2014-07-11 15:42:10.000000000","message":"Done","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"ee7c56cdca292ac308e186f1d87d4d102dfc30ab","unresolved":false,"context_lines":[{"line_number":457,"context_line":"            group_driver.get_group(group_entity_id)"},{"line_number":458,"context_line":"            # If we get here, then someone is attempting to create a cross"},{"line_number":459,"context_line":"            # backend membership, which is not allowed."},{"line_number":460,"context_line":"            raise exception.CrossBackendNotAllowed(public_id\u003dgroup_entity_id)"},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"    def _mark_domain_id_filter_satisfied(self, hints):"},{"line_number":463,"context_line":"        if hints:"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_979e1753","line":460,"updated":"2014-07-10 19:14:18.000000000","message":"this only has the group ID and not the user entity ID... is there some reason the caller doesn\u0027t need to know the user entity ID?","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"1338d39d3d1a6c9e6ff2b59cbb1d7c872189e792","unresolved":false,"context_lines":[{"line_number":457,"context_line":"            group_driver.get_group(group_entity_id)"},{"line_number":458,"context_line":"            # If we get here, then someone is attempting to create a cross"},{"line_number":459,"context_line":"            # backend membership, which is not allowed."},{"line_number":460,"context_line":"            raise exception.CrossBackendNotAllowed(public_id\u003dgroup_entity_id)"},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"    def _mark_domain_id_filter_satisfied(self, hints):"},{"line_number":463,"context_line":"        if hints:"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_cef1ce6b","line":460,"in_reply_to":"baada198_979e1753","updated":"2014-07-11 15:42:10.000000000","message":"Done","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"b00784c2494a8dd53120a800016afccfb7636c8c","unresolved":false,"context_lines":[{"line_number":475,"context_line":""},{"line_number":476,"context_line":"    @notifications.emit_event(\u0027authenticate\u0027)"},{"line_number":477,"context_line":"    @domains_configured"},{"line_number":478,"context_line":"    @exception_mapped(\u0027assertion\u0027)"},{"line_number":479,"context_line":"    def authenticate(self, context, user_id, password):"},{"line_number":480,"context_line":"        domain_id, driver, entity_id \u003d ("},{"line_number":481,"context_line":"            self._get_domain_driver_and_entity_id(user_id))"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_9790d74f","line":478,"updated":"2014-07-10 20:08:45.000000000","message":"this reads super vaguely","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"1338d39d3d1a6c9e6ff2b59cbb1d7c872189e792","unresolved":false,"context_lines":[{"line_number":475,"context_line":""},{"line_number":476,"context_line":"    @notifications.emit_event(\u0027authenticate\u0027)"},{"line_number":477,"context_line":"    @domains_configured"},{"line_number":478,"context_line":"    @exception_mapped(\u0027assertion\u0027)"},{"line_number":479,"context_line":"    def authenticate(self, context, user_id, password):"},{"line_number":480,"context_line":"        domain_id, driver, entity_id \u003d ("},{"line_number":481,"context_line":"            self._get_domain_driver_and_entity_id(user_id))"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_a24914b9","line":478,"in_reply_to":"baada198_9790d74f","updated":"2014-07-11 15:42:10.000000000","message":"Done","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"b00784c2494a8dd53120a800016afccfb7636c8c","unresolved":false,"context_lines":[{"line_number":657,"context_line":"            self._get_domain_driver_and_entity_id(group_id))"},{"line_number":658,"context_line":"        # Get the same info for the user_id, taking care to map any"},{"line_number":659,"context_line":"        # exceptions correctly"},{"line_number":660,"context_line":"        unused, user_driver, user_entity_id \u003d get_entity_info_for_user(user_id)"},{"line_number":661,"context_line":""},{"line_number":662,"context_line":"        self._check_user_and_group_in_same_backend("},{"line_number":663,"context_line":"            user_entity_id, user_driver, group_entity_id, group_driver)"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_b26c099e","line":660,"updated":"2014-07-10 20:08:45.000000000","message":"it\u0027d be nice to label this appropriately instead of \"unused\" (domain_id)\n\n  _domain_id, user_driver, user_entity_id \u003d tuple_to_unpack\n\n_unused -Dr. Redundant","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"1338d39d3d1a6c9e6ff2b59cbb1d7c872189e792","unresolved":false,"context_lines":[{"line_number":657,"context_line":"            self._get_domain_driver_and_entity_id(group_id))"},{"line_number":658,"context_line":"        # Get the same info for the user_id, taking care to map any"},{"line_number":659,"context_line":"        # exceptions correctly"},{"line_number":660,"context_line":"        unused, user_driver, user_entity_id \u003d get_entity_info_for_user(user_id)"},{"line_number":661,"context_line":""},{"line_number":662,"context_line":"        self._check_user_and_group_in_same_backend("},{"line_number":663,"context_line":"            user_entity_id, user_driver, group_entity_id, group_driver)"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_ce98ee1d","line":660,"in_reply_to":"baada198_b26c099e","updated":"2014-07-11 15:42:10.000000000","message":"Done","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e6c7eb4a740cec45d7bf2ee4dfddf222f82ed617","unresolved":false,"context_lines":[{"line_number":687,"context_line":"        # that had role assignments via the group.  Calculating those"},{"line_number":688,"context_line":"        # assignments would have to be done by the assignment backend."},{"line_number":689,"context_line":"        if self.revoke_api:"},{"line_number":690,"context_line":"            self.revoke_api.revoke_by_user(user_id)"},{"line_number":691,"context_line":""},{"line_number":692,"context_line":"    @manager.response_truncated"},{"line_number":693,"context_line":"    @domains_configured"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_7295113f","line":690,"updated":"2014-07-10 20:08:04.000000000","message":"why was the line removed?  it was \"self.token_api.delete_tokens_for_user(user_id)\"","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"b00784c2494a8dd53120a800016afccfb7636c8c","unresolved":false,"context_lines":[{"line_number":770,"context_line":"    def _get_list_limit(self):"},{"line_number":771,"context_line":"        return CONF.identity.list_limit or CONF.list_limit"},{"line_number":772,"context_line":""},{"line_number":773,"context_line":"    def is_domain_aware(self):"},{"line_number":774,"context_line":"        return True"},{"line_number":775,"context_line":""},{"line_number":776,"context_line":"    def generates_uuids(self):"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_d2c33d55","line":773,"updated":"2014-07-10 20:08:45.000000000","message":"you dropped the old docstr on this","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"f588ef56c87a5dda4cc00169896903ce205f553e","unresolved":false,"context_lines":[{"line_number":770,"context_line":"    def _get_list_limit(self):"},{"line_number":771,"context_line":"        return CONF.identity.list_limit or CONF.list_limit"},{"line_number":772,"context_line":""},{"line_number":773,"context_line":"    def is_domain_aware(self):"},{"line_number":774,"context_line":"        return True"},{"line_number":775,"context_line":""},{"line_number":776,"context_line":"    def generates_uuids(self):"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_886358dc","line":773,"in_reply_to":"baada198_d2c33d55","updated":"2014-07-10 21:09:06.000000000","message":"Done","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a116aa1ce2c57f0f1c0d40bc82ba4746fbaf16fd","unresolved":false,"context_lines":[{"line_number":199,"context_line":"                elif exception_type \u003d\u003d \u0027assertion\u0027:"},{"line_number":200,"context_line":"                    raise AssertionError(_(\u0027Invalid user / password\u0027))"},{"line_number":201,"context_line":"                else:"},{"line_number":202,"context_line":"                    raise e"},{"line_number":203,"context_line":"        return wrapper"},{"line_number":204,"context_line":"    return _exception_translated"},{"line_number":205,"context_line":""}],"source_content_type":"text/x-python","patch_set":41,"id":"baada198_31af1496","line":202,"updated":"2014-07-10 21:32:37.000000000","message":"there should be a test for this\n\nalso, change this to just raise so the stack trace isn\u0027t lost.","commit_id":"c4aa7933ba4938c1ec8a9aed6c54a3f8fb18e6a2"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"1b26850606a052d2d9aace08062f54ff79283d52","unresolved":false,"context_lines":[{"line_number":199,"context_line":"                elif exception_type \u003d\u003d \u0027assertion\u0027:"},{"line_number":200,"context_line":"                    raise AssertionError(_(\u0027Invalid user / password\u0027))"},{"line_number":201,"context_line":"                else:"},{"line_number":202,"context_line":"                    raise e"},{"line_number":203,"context_line":"        return wrapper"},{"line_number":204,"context_line":"    return _exception_translated"},{"line_number":205,"context_line":""}],"source_content_type":"text/x-python","patch_set":41,"id":"baada198_fe570e58","line":202,"in_reply_to":"baada198_31af1496","updated":"2014-07-11 15:42:17.000000000","message":"Changed it to six.reraise(e). If it\u0027s ok, I\u0027ll come back in late and add tests for this corner case.","commit_id":"c4aa7933ba4938c1ec8a9aed6c54a3f8fb18e6a2"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a116aa1ce2c57f0f1c0d40bc82ba4746fbaf16fd","unresolved":false,"context_lines":[{"line_number":207,"context_line":"@dependency.provider(\u0027identity_api\u0027)"},{"line_number":208,"context_line":"@dependency.optional(\u0027revoke_api\u0027)"},{"line_number":209,"context_line":"@dependency.requires(\u0027assignment_api\u0027, \u0027credential_api\u0027, \u0027token_api\u0027,"},{"line_number":210,"context_line":"                     \u0027id_mapping_api\u0027)"},{"line_number":211,"context_line":"class Manager(manager.Manager):"},{"line_number":212,"context_line":"    \"\"\"Default pivot point for the Identity backend."},{"line_number":213,"context_line":""}],"source_content_type":"text/x-python","patch_set":41,"id":"baada198_919f005f","line":210,"updated":"2014-07-10 21:32:37.000000000","message":"keep these in alphabetical order","commit_id":"c4aa7933ba4938c1ec8a9aed6c54a3f8fb18e6a2"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"1b26850606a052d2d9aace08062f54ff79283d52","unresolved":false,"context_lines":[{"line_number":207,"context_line":"@dependency.provider(\u0027identity_api\u0027)"},{"line_number":208,"context_line":"@dependency.optional(\u0027revoke_api\u0027)"},{"line_number":209,"context_line":"@dependency.requires(\u0027assignment_api\u0027, \u0027credential_api\u0027, \u0027token_api\u0027,"},{"line_number":210,"context_line":"                     \u0027id_mapping_api\u0027)"},{"line_number":211,"context_line":"class Manager(manager.Manager):"},{"line_number":212,"context_line":"    \"\"\"Default pivot point for the Identity backend."},{"line_number":213,"context_line":""}],"source_content_type":"text/x-python","patch_set":41,"id":"baada198_aed01a54","line":210,"in_reply_to":"baada198_919f005f","updated":"2014-07-11 15:42:17.000000000","message":"Done","commit_id":"c4aa7933ba4938c1ec8a9aed6c54a3f8fb18e6a2"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a116aa1ce2c57f0f1c0d40bc82ba4746fbaf16fd","unresolved":false,"context_lines":[{"line_number":332,"context_line":"                    # Need to create a mapping. If the driver generates UUIDs"},{"line_number":333,"context_line":"                    # then pass the local UUID in as the public ID to use."},{"line_number":334,"context_line":"                    if driver.generates_uuids():"},{"line_number":335,"context_line":"                        public_id \u003d ref[\u0027id\u0027]"},{"line_number":336,"context_line":"                    ref[\u0027id\u0027] \u003d self.id_mapping_api.create_id_mapping("},{"line_number":337,"context_line":"                        local_entity, public_id)"},{"line_number":338,"context_line":"                    LOG.debug(\u0027Created new mapping to public ID: %s\u0027,"}],"source_content_type":"text/x-python","patch_set":41,"id":"baada198_f192fc49","line":335,"updated":"2014-07-10 21:32:37.000000000","message":"this should be tested","commit_id":"c4aa7933ba4938c1ec8a9aed6c54a3f8fb18e6a2"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"1b26850606a052d2d9aace08062f54ff79283d52","unresolved":false,"context_lines":[{"line_number":332,"context_line":"                    # Need to create a mapping. If the driver generates UUIDs"},{"line_number":333,"context_line":"                    # then pass the local UUID in as the public ID to use."},{"line_number":334,"context_line":"                    if driver.generates_uuids():"},{"line_number":335,"context_line":"                        public_id \u003d ref[\u0027id\u0027]"},{"line_number":336,"context_line":"                    ref[\u0027id\u0027] \u003d self.id_mapping_api.create_id_mapping("},{"line_number":337,"context_line":"                        local_entity, public_id)"},{"line_number":338,"context_line":"                    LOG.debug(\u0027Created new mapping to public ID: %s\u0027,"}],"source_content_type":"text/x-python","patch_set":41,"id":"baada198_9e70d241","line":335,"in_reply_to":"baada198_f192fc49","updated":"2014-07-11 15:42:17.000000000","message":"Agreed.  In fact this is a pretty small corner case since the only way to get here is if we have a single SQL driver that is specific to one domain (since we don\u0027t yet support multiple SQL drivers).  I\u0027ll raise a defect to ensure I come back in and add some tests.","commit_id":"c4aa7933ba4938c1ec8a9aed6c54a3f8fb18e6a2"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"9a10e28adf939f42d3cc650c50ad745d6f682da0","unresolved":false,"context_lines":[{"line_number":199,"context_line":"                elif exception_type \u003d\u003d \u0027assertion\u0027:"},{"line_number":200,"context_line":"                    raise AssertionError(_(\u0027Invalid user / password\u0027))"},{"line_number":201,"context_line":"                else:"},{"line_number":202,"context_line":"                    six.reraise(e)"},{"line_number":203,"context_line":"        return wrapper"},{"line_number":204,"context_line":"    return _exception_translated"},{"line_number":205,"context_line":""}],"source_content_type":"text/x-python","patch_set":43,"id":"baada198_da29689c","line":202,"updated":"2014-07-11 19:13:45.000000000","message":"This isn\u0027t tested. Also, I don\u0027t think it will work since six.reraise takes 2 positional arguments: https://pythonhosted.org/six/#six.reraise","commit_id":"0d66ff6e98f3edc636700db94a73726febc77b14"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"76fbded970f7cc2959bd3c4fb11ed88cc86345db","unresolved":false,"context_lines":[{"line_number":199,"context_line":"                elif exception_type \u003d\u003d \u0027assertion\u0027:"},{"line_number":200,"context_line":"                    raise AssertionError(_(\u0027Invalid user / password\u0027))"},{"line_number":201,"context_line":"                else:"},{"line_number":202,"context_line":"                    six.reraise(e)"},{"line_number":203,"context_line":"        return wrapper"},{"line_number":204,"context_line":"    return _exception_translated"},{"line_number":205,"context_line":""}],"source_content_type":"text/x-python","patch_set":43,"id":"baada198_75786dc4","line":202,"in_reply_to":"baada198_da29689c","updated":"2014-07-11 19:35:17.000000000","message":"fixed in terms of not using reraise.","commit_id":"0d66ff6e98f3edc636700db94a73726febc77b14"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"9a10e28adf939f42d3cc650c50ad745d6f682da0","unresolved":false,"context_lines":[{"line_number":385,"context_line":"                                \u0027Default Driver: %(driver)s\u0027,"},{"line_number":386,"context_line":"                                {\u0027domain\u0027: domain_id,"},{"line_number":387,"context_line":"                                 \u0027driver\u0027: (driver \u003d\u003d self.driver)})"},{"line_number":388,"context_line":"                    raise exception.DomainNotFound(domain_id\u003ddomain_id)"},{"line_number":389,"context_line":"        return driver"},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"    def _get_domain_driver_and_entity_id(self, public_id):"}],"source_content_type":"text/x-python","patch_set":43,"id":"baada198_550c493b","line":388,"updated":"2014-07-11 19:13:45.000000000","message":"this isn\u0027t tested.","commit_id":"0d66ff6e98f3edc636700db94a73726febc77b14"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"9a10e28adf939f42d3cc650c50ad745d6f682da0","unresolved":false,"context_lines":[{"line_number":474,"context_line":"            group_driver.get_group(group_entity_id)"},{"line_number":475,"context_line":"            # If we get here, then someone is attempting to create a cross"},{"line_number":476,"context_line":"            # backend membership, which is not allowed."},{"line_number":477,"context_line":"            raise exception.CrossBackendNotAllowed(group_id\u003dgroup_entity_id,"},{"line_number":478,"context_line":"                                                   user_id\u003duser_entity_id)"},{"line_number":479,"context_line":""},{"line_number":480,"context_line":"    def _mark_domain_id_filter_satisfied(self, hints):"}],"source_content_type":"text/x-python","patch_set":43,"id":"baada198_b53125ef","line":477,"updated":"2014-07-11 19:13:45.000000000","message":"this isn\u0027t tested.","commit_id":"0d66ff6e98f3edc636700db94a73726febc77b14"},{"author":{"_account_id":10873,"name":"Juan Antonio Osorio Robles","email":"jaosorior@redhat.com","username":"ejuaoso"},"change_message_id":"d7270ac7abbc29983c53e047e4eabbef19a56ec6","unresolved":false,"context_lines":[{"line_number":469,"context_line":"        if user_driver is not group_driver:"},{"line_number":470,"context_line":"            # Determine first if either IDs don\u0027t exist by calling"},{"line_number":471,"context_line":"            # the driver.get methods (which will raise a NotFound"},{"line_number":472,"context_line":"            # exception)."},{"line_number":473,"context_line":"            user_driver.get_user(user_entity_id)"},{"line_number":474,"context_line":"            group_driver.get_group(group_entity_id)"},{"line_number":475,"context_line":"            # If we get here, then someone is attempting to create a cross"}],"source_content_type":"text/x-python","patch_set":44,"id":"baada198_a6ef3db0","line":472,"updated":"2014-07-11 21:03:16.000000000","message":"This comment wouldn\u0027t be necessary if you would declare a function for this.\n\n_assert_user_and_group_exist(...)\n\nWould be sufficient to declare the intent.","commit_id":"1a50986e7c122afdc14d40aebb0c852b71bd99e1"},{"author":{"_account_id":10873,"name":"Juan Antonio Osorio Robles","email":"jaosorior@redhat.com","username":"ejuaoso"},"change_message_id":"d7270ac7abbc29983c53e047e4eabbef19a56ec6","unresolved":false,"context_lines":[{"line_number":551,"context_line":"    @exception_translated(\u0027user\u0027)"},{"line_number":552,"context_line":"    def list_users(self, domain_scope\u003dNone, hints\u003dNone):"},{"line_number":553,"context_line":"        driver \u003d self._select_identity_driver(domain_scope)"},{"line_number":554,"context_line":"        hints \u003d hints or driver_hints.Hints()"},{"line_number":555,"context_line":"        if driver.is_domain_aware():"},{"line_number":556,"context_line":"            # Force the domain_scope into the hint to ensure that we only get"},{"line_number":557,"context_line":"            # back domains for that scope."}],"source_content_type":"text/x-python","patch_set":44,"id":"baada198_e661353a","line":554,"updated":"2014-07-11 21:03:16.000000000","message":"I rather have this as\n\nif not hints:\n    driver_hints.Hints()\n\nThis is to have it explicit in the coverage that this is actually being tested.","commit_id":"1a50986e7c122afdc14d40aebb0c852b71bd99e1"}],"keystone/identity/mapping_backends/sql.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"64e308e677f5f3ff6feb6fc09fc9459b74d137b9","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from keystone.openstack.common.db.sqlalchemy import session as db_session"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class IDMapping(sql.ModelBase, sql.DictBase):"},{"line_number":26,"context_line":"    __tablename__ \u003d \u0027id_mapping\u0027"},{"line_number":27,"context_line":"    attributes \u003d [\u0027public_id\u0027, \u0027domain_id\u0027, \u0027local_id\u0027]"},{"line_number":28,"context_line":"    public_id \u003d sql.Column(sql.String(64), primary_key\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAVn%2F%2F3yA%3D","line":25,"updated":"2014-03-03 17:57:01.000000000","message":"use ModelDictMixin, not DictBase","commit_id":"8939895c42c7c4a4230d7877afdcb7b5c42c10ab"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"77dcf91a829cd92c47e4158ef05274de0dd933c8","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from keystone.openstack.common.db.sqlalchemy import session as db_session"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class IDMapping(sql.ModelBase, sql.DictBase):"},{"line_number":26,"context_line":"    __tablename__ \u003d \u0027id_mapping\u0027"},{"line_number":27,"context_line":"    attributes \u003d [\u0027public_id\u0027, \u0027domain_id\u0027, \u0027local_id\u0027]"},{"line_number":28,"context_line":"    public_id \u003d sql.Column(sql.String(64), primary_key\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAVn%2F%2F21w%3D","line":25,"in_reply_to":"AAAAVn%2F%2F3yA%3D","updated":"2014-03-03 20:14:36.000000000","message":"Done","commit_id":"8939895c42c7c4a4230d7877afdcb7b5c42c10ab"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"64e308e677f5f3ff6feb6fc09fc9459b74d137b9","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class IDMapping(sql.ModelBase, sql.DictBase):"},{"line_number":26,"context_line":"    __tablename__ \u003d \u0027id_mapping\u0027"},{"line_number":27,"context_line":"    attributes \u003d [\u0027public_id\u0027, \u0027domain_id\u0027, \u0027local_id\u0027]"},{"line_number":28,"context_line":"    public_id \u003d sql.Column(sql.String(64), primary_key\u003dTrue)"},{"line_number":29,"context_line":"    domain_id \u003d sql.Column(sql.String(64), sql.ForeignKey(\u0027domain.id\u0027),"},{"line_number":30,"context_line":"                           nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAVn%2F%2F3yc%3D","line":27,"updated":"2014-03-03 17:57:01.000000000","message":"remove attributes","commit_id":"8939895c42c7c4a4230d7877afdcb7b5c42c10ab"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"77dcf91a829cd92c47e4158ef05274de0dd933c8","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class IDMapping(sql.ModelBase, sql.DictBase):"},{"line_number":26,"context_line":"    __tablename__ \u003d \u0027id_mapping\u0027"},{"line_number":27,"context_line":"    attributes \u003d [\u0027public_id\u0027, \u0027domain_id\u0027, \u0027local_id\u0027]"},{"line_number":28,"context_line":"    public_id \u003d sql.Column(sql.String(64), primary_key\u003dTrue)"},{"line_number":29,"context_line":"    domain_id \u003d sql.Column(sql.String(64), sql.ForeignKey(\u0027domain.id\u0027),"},{"line_number":30,"context_line":"                           nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAVn%2F%2F21s%3D","line":27,"in_reply_to":"AAAAVn%2F%2F3yc%3D","updated":"2014-03-03 20:14:36.000000000","message":"Done","commit_id":"8939895c42c7c4a4230d7877afdcb7b5c42c10ab"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"64e308e677f5f3ff6feb6fc09fc9459b74d137b9","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    @classmethod"},{"line_number":38,"context_line":"    def from_dict(cls, d):"},{"line_number":39,"context_line":"        new_d \u003d d.copy()"},{"line_number":40,"context_line":"        return cls(**new_d)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"class Mapping(identity.MappingDriver):"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAVn%2F%2F3xc%3D","line":40,"updated":"2014-03-03 17:57:01.000000000","message":"remove the to_dict / from_dict implementations","commit_id":"8939895c42c7c4a4230d7877afdcb7b5c42c10ab"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"77dcf91a829cd92c47e4158ef05274de0dd933c8","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    @classmethod"},{"line_number":38,"context_line":"    def from_dict(cls, d):"},{"line_number":39,"context_line":"        new_d \u003d d.copy()"},{"line_number":40,"context_line":"        return cls(**new_d)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"class Mapping(identity.MappingDriver):"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAVn%2F%2F21k%3D","line":40,"in_reply_to":"AAAAVn%2F%2F3xc%3D","updated":"2014-03-03 20:14:36.000000000","message":"Done","commit_id":"8939895c42c7c4a4230d7877afdcb7b5c42c10ab"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"64e308e677f5f3ff6feb6fc09fc9459b74d137b9","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        query \u003d session.query(IDMapping)"},{"line_number":53,"context_line":"        query \u003d query.filter_by(domain_id\u003ddomain_id)"},{"line_number":54,"context_line":"        query \u003d query.filter_by(local_id\u003dlocal_id)"},{"line_number":55,"context_line":"        public_id \u003d None"},{"line_number":56,"context_line":"        try:"},{"line_number":57,"context_line":"            public_ref \u003d query.one()"},{"line_number":58,"context_line":"            public_id \u003d public_ref.public_id"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAVn%2F%2F3w8%3D","line":55,"updated":"2014-03-03 17:57:01.000000000","message":"remove","commit_id":"8939895c42c7c4a4230d7877afdcb7b5c42c10ab"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"77dcf91a829cd92c47e4158ef05274de0dd933c8","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        query \u003d session.query(IDMapping)"},{"line_number":53,"context_line":"        query \u003d query.filter_by(domain_id\u003ddomain_id)"},{"line_number":54,"context_line":"        query \u003d query.filter_by(local_id\u003dlocal_id)"},{"line_number":55,"context_line":"        public_id \u003d None"},{"line_number":56,"context_line":"        try:"},{"line_number":57,"context_line":"            public_ref \u003d query.one()"},{"line_number":58,"context_line":"            public_id \u003d public_ref.public_id"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAVn%2F%2F24M%3D","line":55,"in_reply_to":"AAAAVn%2F%2F3w8%3D","updated":"2014-03-03 20:14:36.000000000","message":"Done","commit_id":"8939895c42c7c4a4230d7877afdcb7b5c42c10ab"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"64e308e677f5f3ff6feb6fc09fc9459b74d137b9","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        public_id \u003d None"},{"line_number":56,"context_line":"        try:"},{"line_number":57,"context_line":"            public_ref \u003d query.one()"},{"line_number":58,"context_line":"            public_id \u003d public_ref.public_id"},{"line_number":59,"context_line":"        except sql.NotFound:"},{"line_number":60,"context_line":"            pass"},{"line_number":61,"context_line":"        return public_id"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAVn%2F%2F3xE%3D","line":58,"updated":"2014-03-03 17:57:01.000000000","message":"return query.one().public_id","commit_id":"8939895c42c7c4a4230d7877afdcb7b5c42c10ab"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"77dcf91a829cd92c47e4158ef05274de0dd933c8","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        public_id \u003d None"},{"line_number":56,"context_line":"        try:"},{"line_number":57,"context_line":"            public_ref \u003d query.one()"},{"line_number":58,"context_line":"            public_id \u003d public_ref.public_id"},{"line_number":59,"context_line":"        except sql.NotFound:"},{"line_number":60,"context_line":"            pass"},{"line_number":61,"context_line":"        return public_id"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAVn%2F%2F24I%3D","line":58,"in_reply_to":"AAAAVn%2F%2F3xE%3D","updated":"2014-03-03 20:14:36.000000000","message":"Done","commit_id":"8939895c42c7c4a4230d7877afdcb7b5c42c10ab"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"64e308e677f5f3ff6feb6fc09fc9459b74d137b9","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            public_ref \u003d query.one()"},{"line_number":58,"context_line":"            public_id \u003d public_ref.public_id"},{"line_number":59,"context_line":"        except sql.NotFound:"},{"line_number":60,"context_line":"            pass"},{"line_number":61,"context_line":"        return public_id"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def create_id_mapping(self, mapping, public_id\u003dNone):"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAVn%2F%2F3xA%3D","line":60,"updated":"2014-03-03 17:57:01.000000000","message":"return None","commit_id":"8939895c42c7c4a4230d7877afdcb7b5c42c10ab"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"77dcf91a829cd92c47e4158ef05274de0dd933c8","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            public_ref \u003d query.one()"},{"line_number":58,"context_line":"            public_id \u003d public_ref.public_id"},{"line_number":59,"context_line":"        except sql.NotFound:"},{"line_number":60,"context_line":"            pass"},{"line_number":61,"context_line":"        return public_id"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def create_id_mapping(self, mapping, public_id\u003dNone):"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAVn%2F%2F24E%3D","line":60,"in_reply_to":"AAAAVn%2F%2F3xA%3D","updated":"2014-03-03 20:14:36.000000000","message":"Done","commit_id":"8939895c42c7c4a4230d7877afdcb7b5c42c10ab"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"64e308e677f5f3ff6feb6fc09fc9459b74d137b9","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        if mapping_ref:"},{"line_number":77,"context_line":"            return mapping_ref.to_dict()"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def list_id_mappings(self):"},{"line_number":80,"context_line":"        session \u003d db_session.get_session()"},{"line_number":81,"context_line":"        refs \u003d session.query(IDMapping).all()"},{"line_number":82,"context_line":"        return [x.to_dict() for x in refs]"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAVn%2F%2F3wc%3D","line":79,"updated":"2014-03-03 17:57:01.000000000","message":"remove this method - there\u0027s no use case for it","commit_id":"8939895c42c7c4a4230d7877afdcb7b5c42c10ab"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"77dcf91a829cd92c47e4158ef05274de0dd933c8","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        if mapping_ref:"},{"line_number":77,"context_line":"            return mapping_ref.to_dict()"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def list_id_mappings(self):"},{"line_number":80,"context_line":"        session \u003d db_session.get_session()"},{"line_number":81,"context_line":"        refs \u003d session.query(IDMapping).all()"},{"line_number":82,"context_line":"        return [x.to_dict() for x in refs]"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAVn%2F%2F23Q%3D","line":79,"in_reply_to":"AAAAVn%2F%2F3wc%3D","updated":"2014-03-03 20:14:36.000000000","message":"it used in testing…so will move it there...","commit_id":"8939895c42c7c4a4230d7877afdcb7b5c42c10ab"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"1bc3b7eae33ff9c2c325d186d121a0205fa52d1d","unresolved":false,"context_lines":[{"line_number":24,"context_line":"class IDMapping(sql.ModelBase, sql.ModelDictMixin):"},{"line_number":25,"context_line":"    __tablename__ \u003d \u0027id_mapping\u0027"},{"line_number":26,"context_line":"    public_id \u003d sql.Column(sql.String(64), primary_key\u003dTrue)"},{"line_number":27,"context_line":"    domain_id \u003d sql.Column(sql.String(64), sql.ForeignKey(\u0027domain.id\u0027),"},{"line_number":28,"context_line":"                           nullable\u003dFalse)"},{"line_number":29,"context_line":"    local_id \u003d sql.Column(sql.String(64), nullable\u003dFalse)"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"7adec928_6143f06c","line":27,"updated":"2014-05-20 18:20:01.000000000","message":"Drop this and move to extension","commit_id":"82e2543e25b95296f3b9c95fa3b4c2ccec873052"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"60b9d8d83c7b9e92c86df79971ae5b4f8fa8abe1","unresolved":false,"context_lines":[{"line_number":24,"context_line":"class IDMapping(sql.ModelBase, sql.ModelDictMixin):"},{"line_number":25,"context_line":"    __tablename__ \u003d \u0027id_mapping\u0027"},{"line_number":26,"context_line":"    public_id \u003d sql.Column(sql.String(64), primary_key\u003dTrue)"},{"line_number":27,"context_line":"    domain_id \u003d sql.Column(sql.String(64), sql.ForeignKey(\u0027domain.id\u0027),"},{"line_number":28,"context_line":"                           nullable\u003dFalse)"},{"line_number":29,"context_line":"    local_id \u003d sql.Column(sql.String(64), nullable\u003dFalse)"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"1ae5cdf2_815fd1e4","line":27,"in_reply_to":"7adec928_6143f06c","updated":"2014-06-02 08:48:30.000000000","message":"which bit? all of it, or just the domain FK?","commit_id":"82e2543e25b95296f3b9c95fa3b4c2ccec873052"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"1bc3b7eae33ff9c2c325d186d121a0205fa52d1d","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    public_id \u003d sql.Column(sql.String(64), primary_key\u003dTrue)"},{"line_number":27,"context_line":"    domain_id \u003d sql.Column(sql.String(64), sql.ForeignKey(\u0027domain.id\u0027),"},{"line_number":28,"context_line":"                           nullable\u003dFalse)"},{"line_number":29,"context_line":"    local_id \u003d sql.Column(sql.String(64), nullable\u003dFalse)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class Mapping(identity.MappingDriver):"}],"source_content_type":"text/x-python","patch_set":21,"id":"7adec928_4167d425","line":29,"updated":"2014-05-20 18:20:01.000000000","message":"Need type: user or group","commit_id":"82e2543e25b95296f3b9c95fa3b4c2ccec873052"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"60b9d8d83c7b9e92c86df79971ae5b4f8fa8abe1","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    public_id \u003d sql.Column(sql.String(64), primary_key\u003dTrue)"},{"line_number":27,"context_line":"    domain_id \u003d sql.Column(sql.String(64), sql.ForeignKey(\u0027domain.id\u0027),"},{"line_number":28,"context_line":"                           nullable\u003dFalse)"},{"line_number":29,"context_line":"    local_id \u003d sql.Column(sql.String(64), nullable\u003dFalse)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class Mapping(identity.MappingDriver):"}],"source_content_type":"text/x-python","patch_set":21,"id":"1ae5cdf2_014ca141","line":29,"in_reply_to":"7adec928_4167d425","updated":"2014-06-02 08:48:30.000000000","message":"Done","commit_id":"82e2543e25b95296f3b9c95fa3b4c2ccec873052"}],"keystone/tests/core.py":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"5ef164da53b5ade0023f26ecaae4cf38daab9f8a","unresolved":false,"context_lines":[{"line_number":430,"context_line":"            new_id \u003d id"},{"line_number":431,"context_line":"            if \u0027@@\u0027 in new_id:"},{"line_number":432,"context_line":"                # Extract the entity ID part"},{"line_number":433,"context_line":"                new_id \u003d new_id.split(\u0027@@\u0027)[0]"},{"line_number":434,"context_line":"            return new_id, self.assign_unique_id(id\u003dnew_id,"},{"line_number":435,"context_line":"                                                 domain_id\u003ddomain_id)"},{"line_number":436,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUX%2F%2Bzs8%3D","line":433,"updated":"2014-02-18 22:03:29.000000000","message":"You defined the composite separator elsewhere, suggest using the same definition everywhere (even in tests).","commit_id":"3b3e1aecfd9f3fd63526563825f1fdbe3b30126a"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"5e5e7e1281372b9ee39e7a9bd3a2427ba47aeb26","unresolved":false,"context_lines":[{"line_number":430,"context_line":"            new_id \u003d id"},{"line_number":431,"context_line":"            if \u0027@@\u0027 in new_id:"},{"line_number":432,"context_line":"                # Extract the entity ID part"},{"line_number":433,"context_line":"                new_id \u003d new_id.split(\u0027@@\u0027)[0]"},{"line_number":434,"context_line":"            return new_id, self.assign_unique_id(id\u003dnew_id,"},{"line_number":435,"context_line":"                                                 domain_id\u003ddomain_id)"},{"line_number":436,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUX%2F%2BzkM%3D","line":433,"in_reply_to":"AAAAUX%2F%2Bzs8%3D","updated":"2014-02-18 22:20:17.000000000","message":"agreed, my bad.","commit_id":"3b3e1aecfd9f3fd63526563825f1fdbe3b30126a"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"9c5ffe35109b7c42ad801404304b16dfcef9db5b","unresolved":false,"context_lines":[{"line_number":473,"context_line":"                setattr(self, attrname, rv)"},{"line_number":474,"context_line":"                fixtures_to_cleanup.append(attrname)"},{"line_number":475,"context_line":""},{"line_number":476,"context_line":"            for tenant in fixtures.TENANTS:"},{"line_number":477,"context_line":"                if hasattr(self, \u0027tenant_%s\u0027 % tenant[\u0027id\u0027]):"},{"line_number":478,"context_line":"                    try:"},{"line_number":479,"context_line":"                        # This will clear out any roles on the project as well"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_d28eddcf","line":476,"updated":"2014-07-10 20:08:52.000000000","message":"TODO(ayoung):  This pattern needs to be extended to all of the entities","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"1338d39d3d1a6c9e6ff2b59cbb1d7c872189e792","unresolved":false,"context_lines":[{"line_number":473,"context_line":"                setattr(self, attrname, rv)"},{"line_number":474,"context_line":"                fixtures_to_cleanup.append(attrname)"},{"line_number":475,"context_line":""},{"line_number":476,"context_line":"            for tenant in fixtures.TENANTS:"},{"line_number":477,"context_line":"                if hasattr(self, \u0027tenant_%s\u0027 % tenant[\u0027id\u0027]):"},{"line_number":478,"context_line":"                    try:"},{"line_number":479,"context_line":"                        # This will clear out any roles on the project as well"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_e0c84824","line":476,"in_reply_to":"baada198_d28eddcf","updated":"2014-07-11 15:42:10.000000000","message":"Will do as a follow up","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"}],"keystone/tests/default_fixtures.py":[{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"b62dfb0f155e31976d8855818c06efa423414e85","unresolved":false,"context_lines":[{"line_number":59,"context_line":"# to check results received back from the database, be sure to check against"},{"line_number":60,"context_line":"# the list directly (e.g. USERS[0][\u0027id\u0027] rather than using a value"},{"line_number":61,"context_line":"# explicitly (e.g. \u0027foo\u0027)."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"USERS \u003d ["},{"line_number":64,"context_line":"    {"},{"line_number":65,"context_line":"        \u0027id\u0027: \u0027foo\u0027,"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAVX%2F%2Foa8%3D","line":62,"updated":"2014-03-02 10:51:12.000000000","message":"remove this comment - it is no longer true","commit_id":"5ae489fe124fa68c445203d00eeb4daa9ddb87f9"}],"keystone/tests/ksfixtures/identity_mapping.py":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"f3c9df41dfe865fa55c488d863b0e41c3d7a658f","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from keystone.identity.mapping_backends import sql as mapping_sql"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"def list_id_mappings():"},{"line_number":19,"context_line":"    # List all id_mappings for testing purposes"},{"line_number":20,"context_line":"    a_session \u003d sql.get_session()"},{"line_number":21,"context_line":"    refs \u003d a_session.query(mapping_sql.IDMapping).all()"}],"source_content_type":"text/x-python","patch_set":28,"id":"1ae5cdf2_724b4b59","line":18,"updated":"2014-06-11 14:32:13.000000000","message":"This really isn\u0027t a fixture. This is more of a utility method that belongs","commit_id":"befaba09d523c08cf7fcb02eb6897f8d05ed6905"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"4d18d7a3649729274054801f4ef6c6117769106c","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from keystone.identity.mapping_backends import sql as mapping_sql"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"def list_id_mappings():"},{"line_number":19,"context_line":"    # List all id_mappings for testing purposes"},{"line_number":20,"context_line":"    a_session \u003d sql.get_session()"},{"line_number":21,"context_line":"    refs \u003d a_session.query(mapping_sql.IDMapping).all()"}],"source_content_type":"text/x-python","patch_set":28,"id":"1ae5cdf2_715c0e4c","line":18,"in_reply_to":"1ae5cdf2_724b4b59","updated":"2014-06-11 14:51:57.000000000","message":"yeah, was abusing the fixtures as a useful place, I agree","commit_id":"befaba09d523c08cf7fcb02eb6897f8d05ed6905"}],"keystone/tests/test_backend.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"b00784c2494a8dd53120a800016afccfb7636c8c","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        self.assignment_api.create_domain(domain[\u0027id\u0027], domain)"},{"line_number":46,"context_line":"        return domain"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def _set_domain_scope(selfself, domain_id):"},{"line_number":49,"context_line":"        # We only provide a domain scope if we have multiple drivers"},{"line_number":50,"context_line":"        if CONF.identity.domain_specific_drivers_enabled:"},{"line_number":51,"context_line":"            return domain_id"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_52bacd6e","line":48,"updated":"2014-07-10 20:08:45.000000000","message":"youyou fixfix selfself","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"f588ef56c87a5dda4cc00169896903ce205f553e","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        self.assignment_api.create_domain(domain[\u0027id\u0027], domain)"},{"line_number":46,"context_line":"        return domain"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def _set_domain_scope(selfself, domain_id):"},{"line_number":49,"context_line":"        # We only provide a domain scope if we have multiple drivers"},{"line_number":50,"context_line":"        if CONF.identity.domain_specific_drivers_enabled:"},{"line_number":51,"context_line":"            return domain_id"}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_a8e73c3f","line":48,"in_reply_to":"baada198_52bacd6e","updated":"2014-07-10 21:09:06.000000000","message":"Done","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"}],"keystone/tests/test_backend_ldap.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"b00784c2494a8dd53120a800016afccfb7636c8c","unresolved":false,"context_lines":[{"line_number":656,"context_line":"        # TODO(morganfainberg): This also needs to be removed when full LDAP"},{"line_number":657,"context_line":"        # implementation is submitted.  No need to duplicate the above test,"},{"line_number":658,"context_line":"        # just skip this time."},{"line_number":659,"context_line":"        self.skipTest(\u0027Domains are read-only against LDAP\u0027)"},{"line_number":660,"context_line":""},{"line_number":661,"context_line":"    def test_user_id_comma(self):"},{"line_number":662,"context_line":"        \"\"\"Even if the user has a , in their ID, groups can be listed.\"\"\""}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_b22fa9a0","line":659,"updated":"2014-07-10 20:08:45.000000000","message":"file a Low priority bug to actually fix this test and unskip it?","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"1338d39d3d1a6c9e6ff2b59cbb1d7c872189e792","unresolved":false,"context_lines":[{"line_number":656,"context_line":"        # TODO(morganfainberg): This also needs to be removed when full LDAP"},{"line_number":657,"context_line":"        # implementation is submitted.  No need to duplicate the above test,"},{"line_number":658,"context_line":"        # just skip this time."},{"line_number":659,"context_line":"        self.skipTest(\u0027Domains are read-only against LDAP\u0027)"},{"line_number":660,"context_line":""},{"line_number":661,"context_line":"    def test_user_id_comma(self):"},{"line_number":662,"context_line":"        \"\"\"Even if the user has a , in their ID, groups can be listed.\"\"\""}],"source_content_type":"text/x-python","patch_set":40,"id":"baada198_c0dfc4d4","line":659,"in_reply_to":"baada198_b22fa9a0","updated":"2014-07-11 15:42:10.000000000","message":"Done","commit_id":"d282fe9bb5dde65e86bc977e5b616f36e1438f1c"}],"keystone/tests/test_sql_upgrade.py":[{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"ae0662cf3ee6707eb5c62fa8a87e76c18c5ad680","unresolved":false,"context_lines":[{"line_number":476,"context_line":"        user_table \u003d sqlalchemy.Table(\"user\","},{"line_number":477,"context_line":"                                      self.metadata,"},{"line_number":478,"context_line":"                                      autoload\u003dTrue)"},{"line_number":479,"context_line":"        a_user \u003d session.query(user_table).filter_by("},{"line_number":480,"context_line":"            id\u003ddefault_fixtures.USERS[0][\u0027id\u0027]).one()"},{"line_number":481,"context_line":"        self.assertTrue(a_user.enabled)"},{"line_number":482,"context_line":"        self.assertEqual(a_user.domain_id, DEFAULT_DOMAIN_ID)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2FuBQ%3D","line":479,"updated":"2014-02-25 04:17:29.000000000","message":"Have you run thise against live database?  I suspect that they will break with the longer strings, and are only passing on SQLite","commit_id":"016eb2481628895e0b8176055ed3c19fc6149348"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d2132febe94cf4e040feb164f2e7b7e74a1094ab","unresolved":false,"context_lines":[{"line_number":476,"context_line":"        user_table \u003d sqlalchemy.Table(\"user\","},{"line_number":477,"context_line":"                                      self.metadata,"},{"line_number":478,"context_line":"                                      autoload\u003dTrue)"},{"line_number":479,"context_line":"        a_user \u003d session.query(user_table).filter_by("},{"line_number":480,"context_line":"            id\u003ddefault_fixtures.USERS[0][\u0027id\u0027]).one()"},{"line_number":481,"context_line":"        self.assertTrue(a_user.enabled)"},{"line_number":482,"context_line":"        self.assertEqual(a_user.domain_id, DEFAULT_DOMAIN_ID)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2Fmm4%3D","line":479,"in_reply_to":"AAAAU3%2F%2FuBQ%3D","updated":"2014-02-25 18:06:24.000000000","message":"I fear you may be right…testing underway...","commit_id":"016eb2481628895e0b8176055ed3c19fc6149348"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"b62dfb0f155e31976d8855818c06efa423414e85","unresolved":false,"context_lines":[{"line_number":2028,"context_line":"        check_grants(session, base_data)"},{"line_number":2029,"context_line":"        session.close()"},{"line_number":2030,"context_line":""},{"line_number":2031,"context_line":"    def test_id_mapping(self):"},{"line_number":2032,"context_line":"        self.upgrade(40)"},{"line_number":2033,"context_line":"        self.assertTableDoesNotExist(\u0027id_mapping\u0027)"},{"line_number":2034,"context_line":"        self.upgrade(41)"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAVX%2F%2Foaw%3D","line":2031,"updated":"2014-03-02 10:51:12.000000000","message":"revert all the other changes in this file but this method","commit_id":"5ae489fe124fa68c445203d00eeb4daa9ddb87f9"}]}
