)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"323ef5b1d2b24653b8d6ffd9564ba5d99c43e384","unresolved":false,"context_lines":[{"line_number":13,"context_line":"want smaller customers to have their identity managed solely"},{"line_number":14,"context_line":"within the OpenStack cloud, perhaps in a shared SQL database."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"This patch allows domain specifc backends for identity objects"},{"line_number":17,"context_line":"(namely User and groups), which are specified by creation of a domain"},{"line_number":18,"context_line":"configuration file for each domain that requires its own backend."},{"line_number":19,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"AAAAQn%2F%2FH8c%3D","line":16,"updated":"2013-08-06 22:42:52.000000000","message":"change \"specifc\" to \"specific\"","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"63e20794984f026022e2d75937bcb3b856535927","unresolved":false,"context_lines":[{"line_number":13,"context_line":"want smaller customers to have their identity managed solely"},{"line_number":14,"context_line":"within the OpenStack cloud, perhaps in a shared SQL database."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"This patch allows domain specifc backends for identity objects"},{"line_number":17,"context_line":"(namely User and groups), which are specified by creation of a domain"},{"line_number":18,"context_line":"configuration file for each domain that requires its own backend."},{"line_number":19,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"AAAAQn%2F%2FFyI%3D","line":16,"in_reply_to":"AAAAQn%2F%2FH8c%3D","updated":"2013-08-07 14:24:24.000000000","message":"Done","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"323ef5b1d2b24653b8d6ffd9564ba5d99c43e384","unresolved":false,"context_lines":[{"line_number":14,"context_line":"within the OpenStack cloud, perhaps in a shared SQL database."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"This patch allows domain specifc backends for identity objects"},{"line_number":17,"context_line":"(namely User and groups), which are specified by creation of a domain"},{"line_number":18,"context_line":"configuration file for each domain that requires its own backend."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"A side benefit of this change is that it clearly separates the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"AAAAQn%2F%2FH8M%3D","line":17,"updated":"2013-08-06 22:42:52.000000000","message":"change \"User\" to \"users\"","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"63e20794984f026022e2d75937bcb3b856535927","unresolved":false,"context_lines":[{"line_number":14,"context_line":"within the OpenStack cloud, perhaps in a shared SQL database."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"This patch allows domain specifc backends for identity objects"},{"line_number":17,"context_line":"(namely User and groups), which are specified by creation of a domain"},{"line_number":18,"context_line":"configuration file for each domain that requires its own backend."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"A side benefit of this change is that it clearly separates the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"AAAAQn%2F%2FFyE%3D","line":17,"in_reply_to":"AAAAQn%2F%2FH8M%3D","updated":"2013-08-07 14:24:24.000000000","message":"Done","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"323ef5b1d2b24653b8d6ffd9564ba5d99c43e384","unresolved":false,"context_lines":[{"line_number":23,"context_line":"LDAP identity backend."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Implements bp multiple-ldap-servers"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Change-Id: I489e8e50035f88eca4235908ae8b1a532645daab"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"AAAAQn%2F%2FH8I%3D","line":26,"updated":"2013-08-06 22:42:52.000000000","message":"add a DocImpact tag.","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"63e20794984f026022e2d75937bcb3b856535927","unresolved":false,"context_lines":[{"line_number":23,"context_line":"LDAP identity backend."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Implements bp multiple-ldap-servers"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Change-Id: I489e8e50035f88eca4235908ae8b1a532645daab"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"AAAAQn%2F%2FFyA%3D","line":26,"in_reply_to":"AAAAQn%2F%2FH8I%3D","updated":"2013-08-07 14:24:24.000000000","message":"Done","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"}],"doc/source/configuration.rst":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"323ef5b1d2b24653b8d6ffd9564ba5d99c43e384","unresolved":false,"context_lines":[{"line_number":98,"context_line":""},{"line_number":99,"context_line":"Keystone supports the option to specify identity driver configurations on a domain by"},{"line_number":100,"context_line":"domain basis, allowing, for example, a specific domain to have its own LDAP or SQL"},{"line_number":101,"context_line":"server. This is configured by specifying the following options:"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"[identity]"},{"line_number":104,"context_line":"domain_specific_drivers_enabled \u003d True"}],"source_content_type":"text/x-rst","patch_set":12,"id":"AAAAQn%2F%2FH68%3D","line":101,"updated":"2013-08-06 22:42:52.000000000","message":"change : to :: for rst","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"63e20794984f026022e2d75937bcb3b856535927","unresolved":false,"context_lines":[{"line_number":98,"context_line":""},{"line_number":99,"context_line":"Keystone supports the option to specify identity driver configurations on a domain by"},{"line_number":100,"context_line":"domain basis, allowing, for example, a specific domain to have its own LDAP or SQL"},{"line_number":101,"context_line":"server. This is configured by specifying the following options:"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"[identity]"},{"line_number":104,"context_line":"domain_specific_drivers_enabled \u003d True"}],"source_content_type":"text/x-rst","patch_set":12,"id":"AAAAQn%2F%2FFM4%3D","line":101,"in_reply_to":"AAAAQn%2F%2FH68%3D","updated":"2013-08-07 14:24:24.000000000","message":"Done","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"323ef5b1d2b24653b8d6ffd9564ba5d99c43e384","unresolved":false,"context_lines":[{"line_number":105,"context_line":"domain_config_dir \u003d \u0027/etc/keystone/domains\u0027"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"With the above specified, keystone will look in the ``domain_config_dir`` for config"},{"line_number":108,"context_line":"files of the form:"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"keystone.\u003cdomain_name\u003e.conf"},{"line_number":111,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"AAAAQn%2F%2FH64%3D","line":108,"updated":"2013-08-06 22:42:52.000000000","message":"change : to :: for rst","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"63e20794984f026022e2d75937bcb3b856535927","unresolved":false,"context_lines":[{"line_number":105,"context_line":"domain_config_dir \u003d \u0027/etc/keystone/domains\u0027"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"With the above specified, keystone will look in the ``domain_config_dir`` for config"},{"line_number":108,"context_line":"files of the form:"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"keystone.\u003cdomain_name\u003e.conf"},{"line_number":111,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"AAAAQn%2F%2FFM0%3D","line":108,"in_reply_to":"AAAAQn%2F%2FH64%3D","updated":"2013-08-07 14:24:24.000000000","message":"Done","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f4c378a8548ff2fd49e39d9a07a1363f0be65506","unresolved":false,"context_lines":[{"line_number":105,"context_line":"domain_specific_drivers_enabled \u003d True"},{"line_number":106,"context_line":"domain_config_dir \u003d \u0027/etc/keystone/domains\u0027"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"Setting `domain_specific_drivers_enabled`` to True will enable this feature, causing"},{"line_number":109,"context_line":"keystone will look in the ``domain_config_dir`` for config files of the form::"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"keystone.\u003cdomain_name\u003e.conf"}],"source_content_type":"text/x-rst","patch_set":13,"id":"AAAAQn%2F%2FEoE%3D","line":108,"updated":"2013-08-07 16:20:14.000000000","message":"there\u0027s a ` missing: ``domain_specific...","commit_id":"21686b7a5c725fa8134d338b4ea2aaa50822918f"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d216cd45f8cb56b6bd10d6382e328d75932db17a","unresolved":false,"context_lines":[{"line_number":105,"context_line":"domain_specific_drivers_enabled \u003d True"},{"line_number":106,"context_line":"domain_config_dir \u003d \u0027/etc/keystone/domains\u0027"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"Setting `domain_specific_drivers_enabled`` to True will enable this feature, causing"},{"line_number":109,"context_line":"keystone will look in the ``domain_config_dir`` for config files of the form::"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"keystone.\u003cdomain_name\u003e.conf"}],"source_content_type":"text/x-rst","patch_set":13,"id":"AAAAQn%2F%2FEhI%3D","line":108,"in_reply_to":"AAAAQn%2F%2FEoE%3D","updated":"2013-08-07 16:26:54.000000000","message":"Done","commit_id":"21686b7a5c725fa8134d338b4ea2aaa50822918f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f4c378a8548ff2fd49e39d9a07a1363f0be65506","unresolved":false,"context_lines":[{"line_number":106,"context_line":"domain_config_dir \u003d \u0027/etc/keystone/domains\u0027"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"Setting `domain_specific_drivers_enabled`` to True will enable this feature, causing"},{"line_number":109,"context_line":"keystone will look in the ``domain_config_dir`` for config files of the form::"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"keystone.\u003cdomain_name\u003e.conf"},{"line_number":112,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"AAAAQn%2F%2FEn4%3D","line":109,"updated":"2013-08-07 16:20:14.000000000","message":"change \"causing keystone will\" to \"causing Keystone to\"\n\nchange \"config\" to \"configuration\"","commit_id":"21686b7a5c725fa8134d338b4ea2aaa50822918f"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d216cd45f8cb56b6bd10d6382e328d75932db17a","unresolved":false,"context_lines":[{"line_number":106,"context_line":"domain_config_dir \u003d \u0027/etc/keystone/domains\u0027"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"Setting `domain_specific_drivers_enabled`` to True will enable this feature, causing"},{"line_number":109,"context_line":"keystone will look in the ``domain_config_dir`` for config files of the form::"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"keystone.\u003cdomain_name\u003e.conf"},{"line_number":112,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"AAAAQn%2F%2FEhQ%3D","line":109,"in_reply_to":"AAAAQn%2F%2FEn4%3D","updated":"2013-08-07 16:26:54.000000000","message":"Done","commit_id":"21686b7a5c725fa8134d338b4ea2aaa50822918f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"acc17803a994f7f2e3cb8eb3de93a5d6e62c9277","unresolved":false,"context_lines":[{"line_number":101,"context_line":"domain to have its own LDAP or SQL server. This is configured by specifying the"},{"line_number":102,"context_line":"following options::"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"[identity]"},{"line_number":105,"context_line":"domain_specific_drivers_enabled \u003d True"},{"line_number":106,"context_line":"domain_config_dir \u003d \u0027/etc/keystone/domains\u0027"},{"line_number":107,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"AAAAQn%2F%2FEYw%3D","line":104,"updated":"2013-08-07 16:54:17.000000000","message":"indent these lines a space","commit_id":"3d238bb7a57c10896225322c37e4923fea5fb28c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"22dbebaa6e207f319b67607b6ee6eb29d3c25d6c","unresolved":false,"context_lines":[{"line_number":101,"context_line":"domain to have its own LDAP or SQL server. This is configured by specifying the"},{"line_number":102,"context_line":"following options::"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"[identity]"},{"line_number":105,"context_line":"domain_specific_drivers_enabled \u003d True"},{"line_number":106,"context_line":"domain_config_dir \u003d \u0027/etc/keystone/domains\u0027"},{"line_number":107,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"AAAAQn%2F%2FDvA%3D","line":104,"in_reply_to":"AAAAQn%2F%2FEYw%3D","updated":"2013-08-08 14:57:28.000000000","message":"Done","commit_id":"3d238bb7a57c10896225322c37e4923fea5fb28c"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"acc17803a994f7f2e3cb8eb3de93a5d6e62c9277","unresolved":false,"context_lines":[{"line_number":108,"context_line":"Setting ``domain_specific_drivers_enabled`` to True will enable this feature, causing"},{"line_number":109,"context_line":"keystone to look in the ``domain_config_dir`` for config files of the form::"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"keystone.\u003cdomain_name\u003e.conf"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"where \u003cdomain_name\u003e is the name of the domain for which these options are to"},{"line_number":114,"context_line":"be applied."}],"source_content_type":"text/x-rst","patch_set":14,"id":"AAAAQn%2F%2FEYo%3D","line":111,"updated":"2013-08-07 16:54:17.000000000","message":"indent this line a space.","commit_id":"3d238bb7a57c10896225322c37e4923fea5fb28c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"22dbebaa6e207f319b67607b6ee6eb29d3c25d6c","unresolved":false,"context_lines":[{"line_number":108,"context_line":"Setting ``domain_specific_drivers_enabled`` to True will enable this feature, causing"},{"line_number":109,"context_line":"keystone to look in the ``domain_config_dir`` for config files of the form::"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"keystone.\u003cdomain_name\u003e.conf"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"where \u003cdomain_name\u003e is the name of the domain for which these options are to"},{"line_number":114,"context_line":"be applied."}],"source_content_type":"text/x-rst","patch_set":14,"id":"AAAAQn%2F%2FDvE%3D","line":111,"in_reply_to":"AAAAQn%2F%2FEYo%3D","updated":"2013-08-08 14:57:28.000000000","message":"Done","commit_id":"3d238bb7a57c10896225322c37e4923fea5fb28c"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"6b611c92242bfbfb55d55c3cb809a966ac983356","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":" [identity]"},{"line_number":105,"context_line":" domain_specific_drivers_enabled \u003d True"},{"line_number":106,"context_line":" domain_config_dir \u003d \u0027/etc/keystone/domains\u0027"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"Setting ``domain_specific_drivers_enabled`` to True will enable this feature, causing"},{"line_number":109,"context_line":"keystone to look in the ``domain_config_dir`` for config files of the form::"}],"source_content_type":"text/x-rst","patch_set":15,"id":"AAAAQn%2F%2FAjQ%3D","line":106,"updated":"2013-08-08 15:36:06.000000000","message":"probably don\u0027t want the quotes here.","commit_id":"93eb50081c20a3e94e5c18a5b7bece1729faaa34"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"dffcc662b779521efb96f67503d6447a270afe7d","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":" [identity]"},{"line_number":105,"context_line":" domain_specific_drivers_enabled \u003d True"},{"line_number":106,"context_line":" domain_config_dir \u003d \u0027/etc/keystone/domains\u0027"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"Setting ``domain_specific_drivers_enabled`` to True will enable this feature, causing"},{"line_number":109,"context_line":"keystone to look in the ``domain_config_dir`` for config files of the form::"}],"source_content_type":"text/x-rst","patch_set":15,"id":"AAAAQ3%2F%2F%2Frw%3D","line":106,"in_reply_to":"AAAAQn%2F%2FAjQ%3D","updated":"2013-08-11 19:55:15.000000000","message":"Done","commit_id":"93eb50081c20a3e94e5c18a5b7bece1729faaa34"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"6b611c92242bfbfb55d55c3cb809a966ac983356","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":" keystone.\u003cdomain_name\u003e.conf"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"where \u003cdomain_name\u003e is the name of the domain for which these options are to"},{"line_number":114,"context_line":"be applied."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"Options given in the domain specific configuration file will override those in the"}],"source_content_type":"text/x-rst","patch_set":15,"id":"AAAAQn%2F%2FAi0%3D","line":113,"updated":"2013-08-08 15:36:06.000000000","message":"this sentence fragment is awkward, unnecessary, and should be terminated with extreme prejudice.","commit_id":"93eb50081c20a3e94e5c18a5b7bece1729faaa34"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"dffcc662b779521efb96f67503d6447a270afe7d","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":" keystone.\u003cdomain_name\u003e.conf"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"where \u003cdomain_name\u003e is the name of the domain for which these options are to"},{"line_number":114,"context_line":"be applied."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"Options given in the domain specific configuration file will override those in the"}],"source_content_type":"text/x-rst","patch_set":15,"id":"AAAAQ3%2F%2F%2Frs%3D","line":113,"in_reply_to":"AAAAQn%2F%2FAi0%3D","updated":"2013-08-11 19:55:15.000000000","message":"Done","commit_id":"93eb50081c20a3e94e5c18a5b7bece1729faaa34"}],"etc/keystone.conf.sample":[{"author":{"_account_id":6456,"name":"Sahdev Zala","email":"spzala@us.ibm.com","username":"spzala"},"change_message_id":"2e807fb8cf2874769418c2887820a65cf44de867","unresolved":false,"context_lines":[{"line_number":104,"context_line":"# their own partial config file in a domain config dir.  Only values specific"},{"line_number":105,"context_line":"# to the domain need to be placed in the domain specific config file."},{"line_number":106,"context_line":"# domain_specific_drivers_enabled \u003d False"},{"line_number":107,"context_line":"# domain_config_dir \u003d \u0027/mydir\u0027"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"[credential]"},{"line_number":110,"context_line":"# driver \u003d keystone.credential.backends.sql.Credential"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"AAAAQn%2F%2FWc4%3D","line":107,"updated":"2013-08-01 15:45:15.000000000","message":"Does this dir has to be at a specific location? can it be named anything?","commit_id":"cd47bb3715c31e978df060ca01336970c89eccca"},{"author":{"_account_id":6456,"name":"Sahdev Zala","email":"spzala@us.ibm.com","username":"spzala"},"change_message_id":"749ce331b6dc36b8e6f6d9bd5087ed98fc460f38","unresolved":false,"context_lines":[{"line_number":104,"context_line":"# their own partial config file in a domain config dir.  Only values specific"},{"line_number":105,"context_line":"# to the domain need to be placed in the domain specific config file."},{"line_number":106,"context_line":"# domain_specific_drivers_enabled \u003d False"},{"line_number":107,"context_line":"# domain_config_dir \u003d \u0027/mydir\u0027"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"[credential]"},{"line_number":110,"context_line":"# driver \u003d keystone.credential.backends.sql.Credential"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"AAAAQn%2F%2FWIc%3D","line":107,"in_reply_to":"AAAAQn%2F%2FWO0%3D","updated":"2013-08-01 17:06:42.000000000","message":"Cool. Thanks!","commit_id":"cd47bb3715c31e978df060ca01336970c89eccca"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"1e3d2c5d41338085a4ed929f9d17c169080beea3","unresolved":false,"context_lines":[{"line_number":104,"context_line":"# their own partial config file in a domain config dir.  Only values specific"},{"line_number":105,"context_line":"# to the domain need to be placed in the domain specific config file."},{"line_number":106,"context_line":"# domain_specific_drivers_enabled \u003d False"},{"line_number":107,"context_line":"# domain_config_dir \u003d \u0027/mydir\u0027"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"[credential]"},{"line_number":110,"context_line":"# driver \u003d keystone.credential.backends.sql.Credential"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"AAAAQn%2F%2FWO0%3D","line":107,"in_reply_to":"AAAAQn%2F%2FWc4%3D","updated":"2013-08-01 16:48:47.000000000","message":"can be named anything....the new default in later version of the patch is \u0027/etc/keystone/domains\u0027","commit_id":"cd47bb3715c31e978df060ca01336970c89eccca"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"323ef5b1d2b24653b8d6ffd9564ba5d99c43e384","unresolved":false,"context_lines":[{"line_number":102,"context_line":"#"},{"line_number":103,"context_line":"# A subset (or all) of domains can have their own identity drivers, each with"},{"line_number":104,"context_line":"# their own partial config file in a domain config dir.  Only values specific"},{"line_number":105,"context_line":"# to the domain need to be placed in the domain specific config file."},{"line_number":106,"context_line":"# domain_specific_drivers_enabled \u003d False"},{"line_number":107,"context_line":"# domain_config_dir \u003d \u0027/etc/keystone/domains\u0027"},{"line_number":108,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":12,"id":"AAAAQn%2F%2FH6M%3D","line":105,"updated":"2013-08-06 22:42:52.000000000","message":"This should say that by default the feature is disabled and need to set domain_specific_drivers_enabled to True to enable it.","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"63e20794984f026022e2d75937bcb3b856535927","unresolved":false,"context_lines":[{"line_number":102,"context_line":"#"},{"line_number":103,"context_line":"# A subset (or all) of domains can have their own identity drivers, each with"},{"line_number":104,"context_line":"# their own partial config file in a domain config dir.  Only values specific"},{"line_number":105,"context_line":"# to the domain need to be placed in the domain specific config file."},{"line_number":106,"context_line":"# domain_specific_drivers_enabled \u003d False"},{"line_number":107,"context_line":"# domain_config_dir \u003d \u0027/etc/keystone/domains\u0027"},{"line_number":108,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":12,"id":"AAAAQn%2F%2FFxs%3D","line":105,"in_reply_to":"AAAAQn%2F%2FH6M%3D","updated":"2013-08-07 14:24:24.000000000","message":"Done","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"9504af4ce0fa9ad531fd5b07dd0ed2eae7f97250","unresolved":false,"context_lines":[{"line_number":106,"context_line":"# feature is disabled by default, set domain_specific_drivers_enabled to True"},{"line_number":107,"context_line":"# to enable."},{"line_number":108,"context_line":"# domain_specific_drivers_enabled \u003d False"},{"line_number":109,"context_line":"# domain_config_dir \u003d \u0027/etc/keystone/domains\u0027"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"[credential]"},{"line_number":112,"context_line":"# driver \u003d keystone.credential.backends.sql.Credential"}],"source_content_type":"application/octet-stream","patch_set":15,"id":"AAAAQ3%2F%2F%2FhU%3D","line":109,"updated":"2013-08-11 14:50:53.000000000","message":"remove \u0027 from the value","commit_id":"93eb50081c20a3e94e5c18a5b7bece1729faaa34"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"dffcc662b779521efb96f67503d6447a270afe7d","unresolved":false,"context_lines":[{"line_number":106,"context_line":"# feature is disabled by default, set domain_specific_drivers_enabled to True"},{"line_number":107,"context_line":"# to enable."},{"line_number":108,"context_line":"# domain_specific_drivers_enabled \u003d False"},{"line_number":109,"context_line":"# domain_config_dir \u003d \u0027/etc/keystone/domains\u0027"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"[credential]"},{"line_number":112,"context_line":"# driver \u003d keystone.credential.backends.sql.Credential"}],"source_content_type":"application/octet-stream","patch_set":15,"id":"AAAAQ3%2F%2F%2FOM%3D","line":109,"in_reply_to":"AAAAQ3%2F%2F%2FhU%3D","updated":"2013-08-11 19:55:15.000000000","message":"Done","commit_id":"93eb50081c20a3e94e5c18a5b7bece1729faaa34"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"67a4818985d3bc8ec9a0a862abf80cee27b777de","unresolved":false,"context_lines":[{"line_number":101,"context_line":"# default_domain_id \u003d default"},{"line_number":102,"context_line":"#"},{"line_number":103,"context_line":"# A subset (or all) of domains can have their own identity drivers, each with"},{"line_number":104,"context_line":"# their own partial config file in a domain config dir.  Only values specific"},{"line_number":105,"context_line":"# to the domain need to be placed in the domain specific config file.  This"},{"line_number":106,"context_line":"# feature is disabled by default, set domain_specific_drivers_enabled to True"},{"line_number":107,"context_line":"# to enable."}],"source_content_type":"application/octet-stream","patch_set":18,"id":"AAAARH%2F%2F7yo%3D","line":104,"updated":"2013-08-15 01:01:44.000000000","message":"change \"config\" to \"configuration\"  and \"dir\" to \"directory\"","commit_id":"1570c6932f3c3254cbdc5de2b07b49920479fad6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"babc0963e1642c8b7897a98ea6b87e63117ca4c5","unresolved":false,"context_lines":[{"line_number":101,"context_line":"# default_domain_id \u003d default"},{"line_number":102,"context_line":"#"},{"line_number":103,"context_line":"# A subset (or all) of domains can have their own identity drivers, each with"},{"line_number":104,"context_line":"# their own partial config file in a domain config dir.  Only values specific"},{"line_number":105,"context_line":"# to the domain need to be placed in the domain specific config file.  This"},{"line_number":106,"context_line":"# feature is disabled by default, set domain_specific_drivers_enabled to True"},{"line_number":107,"context_line":"# to enable."}],"source_content_type":"application/octet-stream","patch_set":18,"id":"AAAARH%2F%2F6oE%3D","line":104,"in_reply_to":"AAAARH%2F%2F7yo%3D","updated":"2013-08-15 09:20:39.000000000","message":"Done","commit_id":"1570c6932f3c3254cbdc5de2b07b49920479fad6"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"67a4818985d3bc8ec9a0a862abf80cee27b777de","unresolved":false,"context_lines":[{"line_number":103,"context_line":"# A subset (or all) of domains can have their own identity drivers, each with"},{"line_number":104,"context_line":"# their own partial config file in a domain config dir.  Only values specific"},{"line_number":105,"context_line":"# to the domain need to be placed in the domain specific config file.  This"},{"line_number":106,"context_line":"# feature is disabled by default, set domain_specific_drivers_enabled to True"},{"line_number":107,"context_line":"# to enable."},{"line_number":108,"context_line":"# domain_specific_drivers_enabled \u003d False"},{"line_number":109,"context_line":"# domain_config_dir \u003d /etc/keystone/domains"}],"source_content_type":"application/octet-stream","patch_set":18,"id":"AAAARH%2F%2F7yg%3D","line":106,"updated":"2013-08-15 01:01:44.000000000","message":", should be ;","commit_id":"1570c6932f3c3254cbdc5de2b07b49920479fad6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"babc0963e1642c8b7897a98ea6b87e63117ca4c5","unresolved":false,"context_lines":[{"line_number":103,"context_line":"# A subset (or all) of domains can have their own identity drivers, each with"},{"line_number":104,"context_line":"# their own partial config file in a domain config dir.  Only values specific"},{"line_number":105,"context_line":"# to the domain need to be placed in the domain specific config file.  This"},{"line_number":106,"context_line":"# feature is disabled by default, set domain_specific_drivers_enabled to True"},{"line_number":107,"context_line":"# to enable."},{"line_number":108,"context_line":"# domain_specific_drivers_enabled \u003d False"},{"line_number":109,"context_line":"# domain_config_dir \u003d /etc/keystone/domains"}],"source_content_type":"application/octet-stream","patch_set":18,"id":"AAAARH%2F%2F6oY%3D","line":106,"in_reply_to":"AAAARH%2F%2F7yg%3D","updated":"2013-08-15 09:20:39.000000000","message":"Done","commit_id":"1570c6932f3c3254cbdc5de2b07b49920479fad6"}],"keystone/auth/plugins/password.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"67a4818985d3bc8ec9a0a862abf80cee27b777de","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                domain_ref \u003d self.identity_api.get_domain("},{"line_number":89,"context_line":"                    user_ref[\u0027domain_id\u0027])"},{"line_number":90,"context_line":"                self._assert_domain_is_enabled(domain_ref)"},{"line_number":91,"context_line":"            self.domain_id \u003d domain_ref[\u0027id\u0027]"},{"line_number":92,"context_line":"        except exception.UserNotFound as e:"},{"line_number":93,"context_line":"            LOG.exception(e)"},{"line_number":94,"context_line":"            raise exception.Unauthorized(e)"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAARH%2F%2F7yU%3D","line":91,"updated":"2013-08-15 01:01:44.000000000","message":"suggest move this down with where other self.* are set (line 97)","commit_id":"1570c6932f3c3254cbdc5de2b07b49920479fad6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"babc0963e1642c8b7897a98ea6b87e63117ca4c5","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                domain_ref \u003d self.identity_api.get_domain("},{"line_number":89,"context_line":"                    user_ref[\u0027domain_id\u0027])"},{"line_number":90,"context_line":"                self._assert_domain_is_enabled(domain_ref)"},{"line_number":91,"context_line":"            self.domain_id \u003d domain_ref[\u0027id\u0027]"},{"line_number":92,"context_line":"        except exception.UserNotFound as e:"},{"line_number":93,"context_line":"            LOG.exception(e)"},{"line_number":94,"context_line":"            raise exception.Unauthorized(e)"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAARH%2F%2F6n8%3D","line":91,"in_reply_to":"AAAARH%2F%2F7yU%3D","updated":"2013-08-15 09:20:39.000000000","message":"Done","commit_id":"1570c6932f3c3254cbdc5de2b07b49920479fad6"}],"keystone/catalog/backends/templated.py":[{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"6b611c92242bfbfb55d55c3cb809a966ac983356","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"CONF \u003d config.CONF"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"def parse_templates(template_lines):"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAQn%2F%2FAiQ%3D","line":27,"updated":"2013-08-08 15:36:06.000000000","message":"Was this moved to common config?","commit_id":"93eb50081c20a3e94e5c18a5b7bece1729faaa34"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"dffcc662b779521efb96f67503d6447a270afe7d","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"CONF \u003d config.CONF"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"def parse_templates(template_lines):"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAQ3%2F%2F%2Fro%3D","line":27,"in_reply_to":"AAAAQn%2F%2FAiQ%3D","updated":"2013-08-11 19:55:15.000000000","message":"Yes","commit_id":"93eb50081c20a3e94e5c18a5b7bece1729faaa34"}],"keystone/common/config.py":[{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"342c4da7023334b0a9d66ddb1c26f1d78ecda95f","unresolved":false,"context_lines":[{"line_number":183,"context_line":"    conf.register_cli_opts(COMMON_CLI_OPTS)"},{"line_number":184,"context_line":"    conf.register_cli_opts(LOGGING_CLI_OPTS)"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    register_cli_bool(\u0027standard-threads\u0027, conf\u003dconf, default\u003dFalse,"},{"line_number":187,"context_line":"                      help\u003d\u0027Do not monkey-patch threading system modules.\u0027)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    register_cli_str(\u0027pydev-debug-host\u0027, conf\u003dconf, default\u003dNone,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAQn%2F%2FMlA%3D","line":186,"updated":"2013-08-05 16:49:39.000000000","message":"I think that, instead of adding this parameter to each file, we should make an objects and provide the same method signature as above.  So instead of \nregister_str(*args, **kw):\nwe call\nconf.register_str(*args, **kw)\n\nthen the code to do \t    \n\nif conf is None:\n\t        conf \u003d CONF\n\nshould be done at the top level of the configure function only once.","commit_id":"89b2db3336097d51f513228e2c60c19e5d8dd172"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"280fc37718656e53a1ab32423a094f52a98e6f68","unresolved":false,"context_lines":[{"line_number":183,"context_line":"    conf.register_cli_opts(COMMON_CLI_OPTS)"},{"line_number":184,"context_line":"    conf.register_cli_opts(LOGGING_CLI_OPTS)"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    register_cli_bool(\u0027standard-threads\u0027, conf\u003dconf, default\u003dFalse,"},{"line_number":187,"context_line":"                      help\u003d\u0027Do not monkey-patch threading system modules.\u0027)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    register_cli_str(\u0027pydev-debug-host\u0027, conf\u003dconf, default\u003dNone,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAQn%2F%2FMOw%3D","line":186,"in_reply_to":"AAAAQn%2F%2FMlA%3D","updated":"2013-08-05 18:07:08.000000000","message":"Looks like a good suggestion, I\u0027ll re-work this file.","commit_id":"89b2db3336097d51f513228e2c60c19e5d8dd172"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"323ef5b1d2b24653b8d6ffd9564ba5d99c43e384","unresolved":false,"context_lines":[{"line_number":150,"context_line":"    conf.register_opt(cfg.StrOpt(\u0027bind_host\u0027, default\u003d\u00270.0.0.0\u0027))"},{"line_number":151,"context_line":"    conf.register_opt(cfg.IntOpt(\u0027compute_port\u0027, default\u003d8774))"},{"line_number":152,"context_line":"    conf.register_opt(cfg.IntOpt(\u0027admin_port\u0027, default\u003d35357))"},{"line_number":153,"context_line":"    conf.register_opt(cfg.BoolOpt(\u0027public_port\u0027, default\u003d5000))"},{"line_number":154,"context_line":"    conf.register_opt(cfg.StrOpt("},{"line_number":155,"context_line":"        \u0027public_endpoint\u0027,"},{"line_number":156,"context_line":"        default\u003d\u0027http://localhost:%(public_port)s/\u0027))"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FH3M%3D","line":153,"updated":"2013-08-06 22:42:52.000000000","message":"should be IntOpt -- we need unit tests to catch this.","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"63e20794984f026022e2d75937bcb3b856535927","unresolved":false,"context_lines":[{"line_number":150,"context_line":"    conf.register_opt(cfg.StrOpt(\u0027bind_host\u0027, default\u003d\u00270.0.0.0\u0027))"},{"line_number":151,"context_line":"    conf.register_opt(cfg.IntOpt(\u0027compute_port\u0027, default\u003d8774))"},{"line_number":152,"context_line":"    conf.register_opt(cfg.IntOpt(\u0027admin_port\u0027, default\u003d35357))"},{"line_number":153,"context_line":"    conf.register_opt(cfg.BoolOpt(\u0027public_port\u0027, default\u003d5000))"},{"line_number":154,"context_line":"    conf.register_opt(cfg.StrOpt("},{"line_number":155,"context_line":"        \u0027public_endpoint\u0027,"},{"line_number":156,"context_line":"        default\u003d\u0027http://localhost:%(public_port)s/\u0027))"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FFuo%3D","line":153,"in_reply_to":"AAAAQn%2F%2FH3M%3D","updated":"2013-08-07 14:24:24.000000000","message":"hmm, damn, realised that I had fixed up a 3 calls first as a test and then  did global copy and paste, which didn\u0027t work for the 3 calls I manually changed...I\u0027ll go back and check them all.  Annoying that no unit test failed when this was wrong....I\u0027ll look at what is needed.","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"323ef5b1d2b24653b8d6ffd9564ba5d99c43e384","unresolved":false,"context_lines":[{"line_number":170,"context_line":"    conf.register_opt(cfg.StrOpt(\u0027member_role_name\u0027, default\u003d\u0027_member_\u0027))"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    # identity"},{"line_number":173,"context_line":"    conf.register_opt(cfg.BoolOpt(\u0027default_domain_id\u0027, default\u003d\u0027default\u0027),"},{"line_number":174,"context_line":"                      group\u003d\u0027identity\u0027)"},{"line_number":175,"context_line":"    conf.register_opt(cfg.StrOpt(\u0027domain_specific_drivers_enabled\u0027,"},{"line_number":176,"context_line":"                                 default\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FH24%3D","line":173,"updated":"2013-08-06 22:42:52.000000000","message":"this is a StrOpt... again, unit tests needed.","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"63e20794984f026022e2d75937bcb3b856535927","unresolved":false,"context_lines":[{"line_number":170,"context_line":"    conf.register_opt(cfg.StrOpt(\u0027member_role_name\u0027, default\u003d\u0027_member_\u0027))"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    # identity"},{"line_number":173,"context_line":"    conf.register_opt(cfg.BoolOpt(\u0027default_domain_id\u0027, default\u003d\u0027default\u0027),"},{"line_number":174,"context_line":"                      group\u003d\u0027identity\u0027)"},{"line_number":175,"context_line":"    conf.register_opt(cfg.StrOpt(\u0027domain_specific_drivers_enabled\u0027,"},{"line_number":176,"context_line":"                                 default\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FFuk%3D","line":173,"in_reply_to":"AAAAQn%2F%2FH24%3D","updated":"2013-08-07 14:24:24.000000000","message":"As above","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"323ef5b1d2b24653b8d6ffd9564ba5d99c43e384","unresolved":false,"context_lines":[{"line_number":172,"context_line":"    # identity"},{"line_number":173,"context_line":"    conf.register_opt(cfg.BoolOpt(\u0027default_domain_id\u0027, default\u003d\u0027default\u0027),"},{"line_number":174,"context_line":"                      group\u003d\u0027identity\u0027)"},{"line_number":175,"context_line":"    conf.register_opt(cfg.StrOpt(\u0027domain_specific_drivers_enabled\u0027,"},{"line_number":176,"context_line":"                                 default\u003dFalse),"},{"line_number":177,"context_line":"                      group\u003d\u0027identity\u0027)"},{"line_number":178,"context_line":"    conf.register_opt(cfg.StrOpt(\u0027domain_config_dir\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FH20%3D","line":175,"updated":"2013-08-06 22:42:52.000000000","message":"This is a BoolOpt.","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"63e20794984f026022e2d75937bcb3b856535927","unresolved":false,"context_lines":[{"line_number":172,"context_line":"    # identity"},{"line_number":173,"context_line":"    conf.register_opt(cfg.BoolOpt(\u0027default_domain_id\u0027, default\u003d\u0027default\u0027),"},{"line_number":174,"context_line":"                      group\u003d\u0027identity\u0027)"},{"line_number":175,"context_line":"    conf.register_opt(cfg.StrOpt(\u0027domain_specific_drivers_enabled\u0027,"},{"line_number":176,"context_line":"                                 default\u003dFalse),"},{"line_number":177,"context_line":"                      group\u003d\u0027identity\u0027)"},{"line_number":178,"context_line":"    conf.register_opt(cfg.StrOpt(\u0027domain_config_dir\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FFug%3D","line":175,"in_reply_to":"AAAAQn%2F%2FH20%3D","updated":"2013-08-07 14:24:24.000000000","message":"As above","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"323ef5b1d2b24653b8d6ffd9564ba5d99c43e384","unresolved":false,"context_lines":[{"line_number":458,"context_line":"    # register any non-default auth methods here (used by extensions, etc)"},{"line_number":459,"context_line":"    for method_name in conf.auth.methods:"},{"line_number":460,"context_line":"        if method_name not in _DEFAULT_AUTH_METHODS:"},{"line_number":461,"context_line":"            conf.register_opt(cfg.StrOpt(method_name), group\u003d\u0027auth\u0027)"},{"line_number":462,"context_line":""},{"line_number":463,"context_line":"    # PasteDeploy config file"},{"line_number":464,"context_line":"    conf.register_opt(cfg.StrOpt(\u0027config_file\u0027, default\u003dNone),"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FHzo%3D","line":461,"updated":"2013-08-06 22:42:52.000000000","message":"was this meant to be removed since the same code is at line 127?","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"63e20794984f026022e2d75937bcb3b856535927","unresolved":false,"context_lines":[{"line_number":458,"context_line":"    # register any non-default auth methods here (used by extensions, etc)"},{"line_number":459,"context_line":"    for method_name in conf.auth.methods:"},{"line_number":460,"context_line":"        if method_name not in _DEFAULT_AUTH_METHODS:"},{"line_number":461,"context_line":"            conf.register_opt(cfg.StrOpt(method_name), group\u003d\u0027auth\u0027)"},{"line_number":462,"context_line":""},{"line_number":463,"context_line":"    # PasteDeploy config file"},{"line_number":464,"context_line":"    conf.register_opt(cfg.StrOpt(\u0027config_file\u0027, default\u003dNone),"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FFvY%3D","line":461,"in_reply_to":"AAAAQn%2F%2FHzo%3D","updated":"2013-08-07 14:24:24.000000000","message":"for now, I was trying to keep the same logic that existed before - which was to have this done here, and a separate call that was available for this to be reset.  However, I guess there is no harm in refactoring this to call the function at 127","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"6b611c92242bfbfb55d55c3cb809a966ac983356","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        cfg.IntOpt(\u0027pydev-debug-port\u0027, default\u003dNone,"},{"line_number":147,"context_line":"                   help\u003d\u0027Port to connect to for remote debugger.\u0027))"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    conf.register_opt(cfg.StrOpt(\u0027admin_token\u0027, secret\u003dTrue, default\u003d\u0027ADMIN\u0027))"},{"line_number":150,"context_line":"    conf.register_opt(cfg.StrOpt(\u0027bind_host\u0027, default\u003d\u00270.0.0.0\u0027))"},{"line_number":151,"context_line":"    conf.register_opt(cfg.IntOpt(\u0027compute_port\u0027, default\u003d8774))"},{"line_number":152,"context_line":"    conf.register_opt(cfg.IntOpt(\u0027admin_port\u0027, default\u003d35357))"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAQn%2F%2FAgQ%3D","line":149,"updated":"2013-08-08 15:36:06.000000000","message":"one possibility is, instead of conf.register_opt over again is to put all of the options into an array and then register them with the array versions just like we do with COMMON_CLI_OPTS and LOGGINC_CLI OPTS.\n\nIt might even make sense to do one array per section for visual documentations.\n\nLDAP_OPTS \u003d [cfg.StrOpt(\u0027url\u0027, default\u003d\u0027ldap://localhost\u0027)]\n\nfor opt in LDAP_OPTS:\n   conf.register_opt(opt, \u0027ldap\u0027)\n\n\nwe could also do this in a dictionary:\n\n{ \u0027ldap\u0027: [cfg.StrOpt(\u0027url\u0027, default\u003d\u0027ldap://localhost\u0027)]}\n\nwhich might be even clearer.","commit_id":"93eb50081c20a3e94e5c18a5b7bece1729faaa34"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"dffcc662b779521efb96f67503d6447a270afe7d","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        cfg.IntOpt(\u0027pydev-debug-port\u0027, default\u003dNone,"},{"line_number":147,"context_line":"                   help\u003d\u0027Port to connect to for remote debugger.\u0027))"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    conf.register_opt(cfg.StrOpt(\u0027admin_token\u0027, secret\u003dTrue, default\u003d\u0027ADMIN\u0027))"},{"line_number":150,"context_line":"    conf.register_opt(cfg.StrOpt(\u0027bind_host\u0027, default\u003d\u00270.0.0.0\u0027))"},{"line_number":151,"context_line":"    conf.register_opt(cfg.IntOpt(\u0027compute_port\u0027, default\u003d8774))"},{"line_number":152,"context_line":"    conf.register_opt(cfg.IntOpt(\u0027admin_port\u0027, default\u003d35357))"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAQ3%2F%2F%2FOQ%3D","line":149,"in_reply_to":"AAAAQn%2F%2FAgQ%3D","updated":"2013-08-11 19:55:15.000000000","message":"Have implemented the first idea (list of options for each group)","commit_id":"93eb50081c20a3e94e5c18a5b7bece1729faaa34"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"67a4818985d3bc8ec9a0a862abf80cee27b777de","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"FILE_OPTIONS \u003d {"},{"line_number":28,"context_line":"    \"\": ["},{"line_number":29,"context_line":"        cfg.StrOpt(\u0027admin_token\u0027, secret\u003dTrue, default\u003d\u0027ADMIN\u0027),"},{"line_number":30,"context_line":"        cfg.StrOpt(\u0027bind_host\u0027, default\u003d\u00270.0.0.0\u0027),"},{"line_number":31,"context_line":"        cfg.IntOpt(\u0027compute_port\u0027, default\u003d8774),"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAARH%2F%2F7xw%3D","line":28,"updated":"2013-08-15 01:01:44.000000000","message":"(nit) use \u0027 for strings","commit_id":"1570c6932f3c3254cbdc5de2b07b49920479fad6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"babc0963e1642c8b7897a98ea6b87e63117ca4c5","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"FILE_OPTIONS \u003d {"},{"line_number":28,"context_line":"    \"\": ["},{"line_number":29,"context_line":"        cfg.StrOpt(\u0027admin_token\u0027, secret\u003dTrue, default\u003d\u0027ADMIN\u0027),"},{"line_number":30,"context_line":"        cfg.StrOpt(\u0027bind_host\u0027, default\u003d\u00270.0.0.0\u0027),"},{"line_number":31,"context_line":"        cfg.IntOpt(\u0027compute_port\u0027, default\u003d8774),"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAARH%2F%2F6nY%3D","line":28,"in_reply_to":"AAAARH%2F%2F7xw%3D","updated":"2013-08-15 09:20:39.000000000","message":"Done","commit_id":"1570c6932f3c3254cbdc5de2b07b49920479fad6"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"67a4818985d3bc8ec9a0a862abf80cee27b777de","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        cfg.StrOpt(\u0027member_role_id\u0027,"},{"line_number":48,"context_line":"                   default\u003d\u00279fe2ff9ee4384b1894a90878d3e92bab\u0027),"},{"line_number":49,"context_line":"        cfg.StrOpt(\u0027member_role_name\u0027, default\u003d\u0027_member_\u0027),"},{"line_number":50,"context_line":"        cfg.IntOpt(\u0027crypt_strength\u0027, default\u003d40000)],"},{"line_number":51,"context_line":"    \u0027identity\u0027: ["},{"line_number":52,"context_line":"        cfg.StrOpt(\u0027default_domain_id\u0027, default\u003d\u0027default\u0027),"},{"line_number":53,"context_line":"        cfg.BoolOpt(\u0027domain_specific_drivers_enabled\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAARH%2F%2F7w4%3D","line":50,"updated":"2013-08-15 01:01:44.000000000","message":"(nit) it would be useful, since this file changes often, to have , on the last list entry and the ] on a separate line.","commit_id":"1570c6932f3c3254cbdc5de2b07b49920479fad6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"babc0963e1642c8b7897a98ea6b87e63117ca4c5","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        cfg.StrOpt(\u0027member_role_id\u0027,"},{"line_number":48,"context_line":"                   default\u003d\u00279fe2ff9ee4384b1894a90878d3e92bab\u0027),"},{"line_number":49,"context_line":"        cfg.StrOpt(\u0027member_role_name\u0027, default\u003d\u0027_member_\u0027),"},{"line_number":50,"context_line":"        cfg.IntOpt(\u0027crypt_strength\u0027, default\u003d40000)],"},{"line_number":51,"context_line":"    \u0027identity\u0027: ["},{"line_number":52,"context_line":"        cfg.StrOpt(\u0027default_domain_id\u0027, default\u003d\u0027default\u0027),"},{"line_number":53,"context_line":"        cfg.BoolOpt(\u0027domain_specific_drivers_enabled\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAARH%2F%2F6nU%3D","line":50,"in_reply_to":"AAAARH%2F%2F7w4%3D","updated":"2013-08-15 09:20:39.000000000","message":"While that is true....it this means that ], needs to align with the key values....which kind of breaks up the easy scanning down the file looking for your key value....so pros and cons.","commit_id":"1570c6932f3c3254cbdc5de2b07b49920479fad6"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"67a4818985d3bc8ec9a0a862abf80cee27b777de","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        cfg.StrOpt(\u0027connection\u0027, secret\u003dTrue,"},{"line_number":108,"context_line":"                   default\u003d\u0027sqlite:///keystone.db\u0027),"},{"line_number":109,"context_line":"        cfg.IntOpt(\u0027idle_timeout\u0027, default\u003d200)],"},{"line_number":110,"context_line":"    #assignment has no default for backward compatibility reasons."},{"line_number":111,"context_line":"    #If assignment is not specified, the identity driver chooses the backend"},{"line_number":112,"context_line":"    \u0027assignment\u0027: ["},{"line_number":113,"context_line":"        cfg.StrOpt(\u0027driver\u0027, default\u003dNone)],"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAARH%2F%2F7wU%3D","line":110,"updated":"2013-08-15 01:01:44.000000000","message":"move this comment next to line 113.","commit_id":"1570c6932f3c3254cbdc5de2b07b49920479fad6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"babc0963e1642c8b7897a98ea6b87e63117ca4c5","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        cfg.StrOpt(\u0027connection\u0027, secret\u003dTrue,"},{"line_number":108,"context_line":"                   default\u003d\u0027sqlite:///keystone.db\u0027),"},{"line_number":109,"context_line":"        cfg.IntOpt(\u0027idle_timeout\u0027, default\u003d200)],"},{"line_number":110,"context_line":"    #assignment has no default for backward compatibility reasons."},{"line_number":111,"context_line":"    #If assignment is not specified, the identity driver chooses the backend"},{"line_number":112,"context_line":"    \u0027assignment\u0027: ["},{"line_number":113,"context_line":"        cfg.StrOpt(\u0027driver\u0027, default\u003dNone)],"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAARH%2F%2F6nM%3D","line":110,"in_reply_to":"AAAARH%2F%2F7wU%3D","updated":"2013-08-15 09:20:39.000000000","message":"Done","commit_id":"1570c6932f3c3254cbdc5de2b07b49920479fad6"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"67a4818985d3bc8ec9a0a862abf80cee27b777de","unresolved":false,"context_lines":[{"line_number":108,"context_line":"                   default\u003d\u0027sqlite:///keystone.db\u0027),"},{"line_number":109,"context_line":"        cfg.IntOpt(\u0027idle_timeout\u0027, default\u003d200)],"},{"line_number":110,"context_line":"    #assignment has no default for backward compatibility reasons."},{"line_number":111,"context_line":"    #If assignment is not specified, the identity driver chooses the backend"},{"line_number":112,"context_line":"    \u0027assignment\u0027: ["},{"line_number":113,"context_line":"        cfg.StrOpt(\u0027driver\u0027, default\u003dNone)],"},{"line_number":114,"context_line":"    \u0027credential\u0027: ["}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAARH%2F%2F7wQ%3D","line":111,"updated":"2013-08-15 01:01:44.000000000","message":"could add \"driver\" after \"assignment\"...","commit_id":"1570c6932f3c3254cbdc5de2b07b49920479fad6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"babc0963e1642c8b7897a98ea6b87e63117ca4c5","unresolved":false,"context_lines":[{"line_number":108,"context_line":"                   default\u003d\u0027sqlite:///keystone.db\u0027),"},{"line_number":109,"context_line":"        cfg.IntOpt(\u0027idle_timeout\u0027, default\u003d200)],"},{"line_number":110,"context_line":"    #assignment has no default for backward compatibility reasons."},{"line_number":111,"context_line":"    #If assignment is not specified, the identity driver chooses the backend"},{"line_number":112,"context_line":"    \u0027assignment\u0027: ["},{"line_number":113,"context_line":"        cfg.StrOpt(\u0027driver\u0027, default\u003dNone)],"},{"line_number":114,"context_line":"    \u0027credential\u0027: ["}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAARH%2F%2F6nI%3D","line":111,"in_reply_to":"AAAARH%2F%2F7wQ%3D","updated":"2013-08-15 09:20:39.000000000","message":"Done","commit_id":"1570c6932f3c3254cbdc5de2b07b49920479fad6"}],"keystone/common/controller.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"323ef5b1d2b24653b8d6ffd9564ba5d99c43e384","unresolved":false,"context_lines":[{"line_number":304,"context_line":"        \"\"\"Get the domain_id for a v3 call.\"\"\""},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"        if context[\u0027is_admin\u0027]:"},{"line_number":307,"context_line":"            domain_id \u003d DEFAULT_DOMAIN_ID"},{"line_number":308,"context_line":"        else:"},{"line_number":309,"context_line":"            # Fish the domain_id out of the token"},{"line_number":310,"context_line":"            #"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FHyo%3D","line":307,"updated":"2013-08-06 22:42:52.000000000","message":"suggest just return here.","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"63e20794984f026022e2d75937bcb3b856535927","unresolved":false,"context_lines":[{"line_number":304,"context_line":"        \"\"\"Get the domain_id for a v3 call.\"\"\""},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"        if context[\u0027is_admin\u0027]:"},{"line_number":307,"context_line":"            domain_id \u003d DEFAULT_DOMAIN_ID"},{"line_number":308,"context_line":"        else:"},{"line_number":309,"context_line":"            # Fish the domain_id out of the token"},{"line_number":310,"context_line":"            #"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FFW4%3D","line":307,"in_reply_to":"AAAAQn%2F%2FHyo%3D","updated":"2013-08-07 14:24:24.000000000","message":"Done","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"323ef5b1d2b24653b8d6ffd9564ba5d99c43e384","unresolved":false,"context_lines":[{"line_number":322,"context_line":"                raise exception.Unauthorized()"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"            if \u0027domain\u0027 in token_ref:"},{"line_number":325,"context_line":"                domain_id \u003d token_ref[\u0027domain\u0027][\u0027id\u0027]"},{"line_number":326,"context_line":"            else:"},{"line_number":327,"context_line":"                # FIXME(henry-nash) Revisit this once v3 token scoping"},{"line_number":328,"context_line":"                # across domains has been hashed out"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FHyg%3D","line":325,"updated":"2013-08-06 22:42:52.000000000","message":"suggest just return here.","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"63e20794984f026022e2d75937bcb3b856535927","unresolved":false,"context_lines":[{"line_number":322,"context_line":"                raise exception.Unauthorized()"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"            if \u0027domain\u0027 in token_ref:"},{"line_number":325,"context_line":"                domain_id \u003d token_ref[\u0027domain\u0027][\u0027id\u0027]"},{"line_number":326,"context_line":"            else:"},{"line_number":327,"context_line":"                # FIXME(henry-nash) Revisit this once v3 token scoping"},{"line_number":328,"context_line":"                # across domains has been hashed out"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FFW0%3D","line":325,"in_reply_to":"AAAAQn%2F%2FHyg%3D","updated":"2013-08-07 14:24:24.000000000","message":"Done","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"323ef5b1d2b24653b8d6ffd9564ba5d99c43e384","unresolved":false,"context_lines":[{"line_number":326,"context_line":"            else:"},{"line_number":327,"context_line":"                # FIXME(henry-nash) Revisit this once v3 token scoping"},{"line_number":328,"context_line":"                # across domains has been hashed out"},{"line_number":329,"context_line":"                domain_id \u003d DEFAULT_DOMAIN_ID"},{"line_number":330,"context_line":"        return domain_id"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"    def _normalize_domain_id(self, context, ref):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FHyc%3D","line":329,"updated":"2013-08-06 22:42:52.000000000","message":"return","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"63e20794984f026022e2d75937bcb3b856535927","unresolved":false,"context_lines":[{"line_number":326,"context_line":"            else:"},{"line_number":327,"context_line":"                # FIXME(henry-nash) Revisit this once v3 token scoping"},{"line_number":328,"context_line":"                # across domains has been hashed out"},{"line_number":329,"context_line":"                domain_id \u003d DEFAULT_DOMAIN_ID"},{"line_number":330,"context_line":"        return domain_id"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"    def _normalize_domain_id(self, context, ref):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FFWw%3D","line":329,"in_reply_to":"AAAAQn%2F%2FHyc%3D","updated":"2013-08-07 14:24:24.000000000","message":"Done","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"6b611c92242bfbfb55d55c3cb809a966ac983356","unresolved":false,"context_lines":[{"line_number":326,"context_line":"            else:"},{"line_number":327,"context_line":"                return DEFAULT_DOMAIN_ID"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"    def _normalize_domain_id(self, context, ref):"},{"line_number":330,"context_line":"        \"\"\"Fill in domain_id if not specified in a v3 call.\"\"\""},{"line_number":331,"context_line":"        if \u0027domain_id\u0027 not in ref:"},{"line_number":332,"context_line":"            ref[\u0027domain_id\u0027] \u003d self._get_domain_id_for_request(context)"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAQn%2F%2FAew%3D","line":329,"updated":"2013-08-08 15:36:06.000000000","message":"Remove the underscore, as it looks like subclasses need this function.","commit_id":"93eb50081c20a3e94e5c18a5b7bece1729faaa34"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"dffcc662b779521efb96f67503d6447a270afe7d","unresolved":false,"context_lines":[{"line_number":326,"context_line":"            else:"},{"line_number":327,"context_line":"                return DEFAULT_DOMAIN_ID"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"    def _normalize_domain_id(self, context, ref):"},{"line_number":330,"context_line":"        \"\"\"Fill in domain_id if not specified in a v3 call.\"\"\""},{"line_number":331,"context_line":"        if \u0027domain_id\u0027 not in ref:"},{"line_number":332,"context_line":"            ref[\u0027domain_id\u0027] \u003d self._get_domain_id_for_request(context)"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAQ3%2F%2F%2Frk%3D","line":329,"in_reply_to":"AAAAQn%2F%2FAew%3D","updated":"2013-08-11 19:55:15.000000000","message":"So agree with the principle...although I was following the convention!  Looks like nearly all these call (e.g. _assign_unique_id, _normalise_domain, _require_matching_id etc. all have under-score prefixes).  Suggest a separate re-factor across all these calls to clean up - I\u0027ll raise a separate bug.","commit_id":"93eb50081c20a3e94e5c18a5b7bece1729faaa34"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"67a4818985d3bc8ec9a0a862abf80cee27b777de","unresolved":false,"context_lines":[{"line_number":305,"context_line":""},{"line_number":306,"context_line":"        if context[\u0027is_admin\u0027]:"},{"line_number":307,"context_line":"            return DEFAULT_DOMAIN_ID"},{"line_number":308,"context_line":"        else:"},{"line_number":309,"context_line":"            # Fish the domain_id out of the token"},{"line_number":310,"context_line":"            #"},{"line_number":311,"context_line":"            # We could make this more efficient by loading the domain_id"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAARH%2F%2F7vs%3D","line":308,"updated":"2013-08-15 01:01:44.000000000","message":"suggest remove this line and then can unindent 18 lines.","commit_id":"1570c6932f3c3254cbdc5de2b07b49920479fad6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"babc0963e1642c8b7897a98ea6b87e63117ca4c5","unresolved":false,"context_lines":[{"line_number":305,"context_line":""},{"line_number":306,"context_line":"        if context[\u0027is_admin\u0027]:"},{"line_number":307,"context_line":"            return DEFAULT_DOMAIN_ID"},{"line_number":308,"context_line":"        else:"},{"line_number":309,"context_line":"            # Fish the domain_id out of the token"},{"line_number":310,"context_line":"            #"},{"line_number":311,"context_line":"            # We could make this more efficient by loading the domain_id"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAARH%2F%2F6mc%3D","line":308,"in_reply_to":"AAAARH%2F%2F7vs%3D","updated":"2013-08-15 09:20:39.000000000","message":"Done","commit_id":"1570c6932f3c3254cbdc5de2b07b49920479fad6"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"67a4818985d3bc8ec9a0a862abf80cee27b777de","unresolved":false,"context_lines":[{"line_number":312,"context_line":"            # into the context in the wrapper function above (since"},{"line_number":313,"context_line":"            # this version of normalize_domain will only be called inside"},{"line_number":314,"context_line":"            # a v3 protected call).  However, given that we only use this"},{"line_number":315,"context_line":"            # for creating entities, this optimization is probably not"},{"line_number":316,"context_line":"            # worth the duplication of state"},{"line_number":317,"context_line":"            try:"},{"line_number":318,"context_line":"                token_ref \u003d self.token_api.get_token("}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAARH%2F%2F7u4%3D","line":315,"updated":"2013-08-15 01:01:44.000000000","message":"This comment isn\u0027t accurate anymore. This function is not only used for creating entities.","commit_id":"1570c6932f3c3254cbdc5de2b07b49920479fad6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"babc0963e1642c8b7897a98ea6b87e63117ca4c5","unresolved":false,"context_lines":[{"line_number":312,"context_line":"            # into the context in the wrapper function above (since"},{"line_number":313,"context_line":"            # this version of normalize_domain will only be called inside"},{"line_number":314,"context_line":"            # a v3 protected call).  However, given that we only use this"},{"line_number":315,"context_line":"            # for creating entities, this optimization is probably not"},{"line_number":316,"context_line":"            # worth the duplication of state"},{"line_number":317,"context_line":"            try:"},{"line_number":318,"context_line":"                token_ref \u003d self.token_api.get_token("}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAARH%2F%2F6mY%3D","line":315,"in_reply_to":"AAAARH%2F%2F7u4%3D","updated":"2013-08-15 09:20:39.000000000","message":"Done","commit_id":"1570c6932f3c3254cbdc5de2b07b49920479fad6"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"5f2c2ce648f390531aef14cdaea347709b1f4eba","unresolved":false,"context_lines":[{"line_number":303,"context_line":"        ref[\u0027id\u0027] \u003d uuid.uuid4().hex"},{"line_number":304,"context_line":"        return ref"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"    def _get_domain_id_for_request(self, context):"},{"line_number":307,"context_line":"        \"\"\"Get the domain_id for a v3 call.\"\"\""},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"        if context[\u0027is_admin\u0027]:"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F9UnM%3D","line":306,"updated":"2014-02-07 18:54:51.000000000","message":"everything about this method is based on broken assumptions... the default domain is not intended to be magical","commit_id":"1ed2046eaa91fa36926d66a5fe1e88ccd65373bb"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"8cfa8e00b4ec0e328f4e0a7caf1496d221df6df3","unresolved":false,"context_lines":[{"line_number":303,"context_line":"        ref[\u0027id\u0027] \u003d uuid.uuid4().hex"},{"line_number":304,"context_line":"        return ref"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"    def _get_domain_id_for_request(self, context):"},{"line_number":307,"context_line":"        \"\"\"Get the domain_id for a v3 call.\"\"\""},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"        if context[\u0027is_admin\u0027]:"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUX%2F%2F%2FuY%3D","line":306,"in_reply_to":"AAAAUH%2F9Uak%3D","updated":"2014-02-07 21:08:47.000000000","message":"if the data \"it wants\" is not available then it needs to raise an exception and abort, not take wild guesses and grant authorization that it shouldn\u0027t.\n\nagain, the assumptions made here are completely ridiculous","commit_id":"1ed2046eaa91fa36926d66a5fe1e88ccd65373bb"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"6f8ccee9f98ecedc1009438634293a6d67db21a3","unresolved":false,"context_lines":[{"line_number":303,"context_line":"        ref[\u0027id\u0027] \u003d uuid.uuid4().hex"},{"line_number":304,"context_line":"        return ref"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"    def _get_domain_id_for_request(self, context):"},{"line_number":307,"context_line":"        \"\"\"Get the domain_id for a v3 call.\"\"\""},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"        if context[\u0027is_admin\u0027]:"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F9Uak%3D","line":306,"in_reply_to":"AAAAUH%2F9UnM%3D","updated":"2014-02-07 19:33:50.000000000","message":"I don\u0027t disagree that there is a problem with this method, since the actual data it wants is not available in all cases.  That\u0027s why we are working on fixing it!","commit_id":"1ed2046eaa91fa36926d66a5fe1e88ccd65373bb"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"5f2c2ce648f390531aef14cdaea347709b1f4eba","unresolved":false,"context_lines":[{"line_number":307,"context_line":"        \"\"\"Get the domain_id for a v3 call.\"\"\""},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"        if context[\u0027is_admin\u0027]:"},{"line_number":310,"context_line":"            return DEFAULT_DOMAIN_ID"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        # Fish the domain_id out of the token"},{"line_number":313,"context_line":"        #"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F9Um4%3D","line":310,"updated":"2014-02-07 18:54:51.000000000","message":"wtf","commit_id":"1ed2046eaa91fa36926d66a5fe1e88ccd65373bb"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"8cfa8e00b4ec0e328f4e0a7caf1496d221df6df3","unresolved":false,"context_lines":[{"line_number":309,"context_line":"        if context[\u0027is_admin\u0027]:"},{"line_number":310,"context_line":"            return DEFAULT_DOMAIN_ID"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        # Fish the domain_id out of the token"},{"line_number":313,"context_line":"        #"},{"line_number":314,"context_line":"        # We could make this more efficient by loading the domain_id"},{"line_number":315,"context_line":"        # into the context in the wrapper function above (since"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUX%2F%2F%2FtQ%3D","line":312,"updated":"2014-02-07 21:08:47.000000000","message":"there should be zero \"fishing\"","commit_id":"1ed2046eaa91fa36926d66a5fe1e88ccd65373bb"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"5f2c2ce648f390531aef14cdaea347709b1f4eba","unresolved":false,"context_lines":[{"line_number":326,"context_line":"        if \u0027domain\u0027 in token_ref:"},{"line_number":327,"context_line":"            return token_ref[\u0027domain\u0027][\u0027id\u0027]"},{"line_number":328,"context_line":"        else:"},{"line_number":329,"context_line":"            return DEFAULT_DOMAIN_ID"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"    def _normalize_domain_id(self, context, ref):"},{"line_number":332,"context_line":"        \"\"\"Fill in domain_id if not specified in a v3 call.\"\"\""}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F9Umw%3D","line":329,"updated":"2014-02-07 18:54:51.000000000","message":"wtf","commit_id":"1ed2046eaa91fa36926d66a5fe1e88ccd65373bb"}],"keystone/common/utils.py":[{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"6b611c92242bfbfb55d55c3cb809a966ac983356","unresolved":false,"context_lines":[{"line_number":31,"context_line":"from keystone import exception"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"CONF \u003d config.CONF"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAQn%2F%2FAeM%3D","line":34,"updated":"2013-08-08 15:36:06.000000000","message":"I assume you pull this out to avoid putting a dependency on oslo config into this file?","commit_id":"93eb50081c20a3e94e5c18a5b7bece1729faaa34"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"dffcc662b779521efb96f67503d6447a270afe7d","unresolved":false,"context_lines":[{"line_number":31,"context_line":"from keystone import exception"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"CONF \u003d config.CONF"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAQ3%2F%2F%2Frg%3D","line":34,"in_reply_to":"AAAAQn%2F%2FAeM%3D","updated":"2013-08-11 19:55:15.000000000","message":"Yes, and to allow it to be included in all config instances","commit_id":"93eb50081c20a3e94e5c18a5b7bece1729faaa34"}],"keystone/identity/backends/ldap.py":[{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"6b611c92242bfbfb55d55c3cb809a966ac983356","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                raise AssertionError(\u0027Invalid user / password\u0027)"},{"line_number":74,"context_line":"        except Exception:"},{"line_number":75,"context_line":"            raise AssertionError(\u0027Invalid user / password\u0027)"},{"line_number":76,"context_line":"        return identity.filter_user(user_ref)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def _get_user(self, user_id):"},{"line_number":79,"context_line":"        return self.user.get(user_id)"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAQn%2F%2FAd8%3D","line":76,"updated":"2013-08-08 15:36:06.000000000","message":"I love this change.  So good when you see things cleaned up across the board.","commit_id":"93eb50081c20a3e94e5c18a5b7bece1729faaa34"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"dffcc662b779521efb96f67503d6447a270afe7d","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                raise AssertionError(\u0027Invalid user / password\u0027)"},{"line_number":74,"context_line":"        except Exception:"},{"line_number":75,"context_line":"            raise AssertionError(\u0027Invalid user / password\u0027)"},{"line_number":76,"context_line":"        return identity.filter_user(user_ref)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def _get_user(self, user_id):"},{"line_number":79,"context_line":"        return self.user.get(user_id)"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAQ3%2F%2F%2Frc%3D","line":76,"in_reply_to":"AAAAQn%2F%2FAd8%3D","updated":"2013-08-11 19:55:15.000000000","message":":-)","commit_id":"93eb50081c20a3e94e5c18a5b7bece1729faaa34"}],"keystone/identity/controllers.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"323ef5b1d2b24653b8d6ffd9564ba5d99c43e384","unresolved":false,"context_lines":[{"line_number":729,"context_line":""},{"line_number":730,"context_line":"        domain_id \u003d self._get_domain_id_for_request(context)"},{"line_number":731,"context_line":"        user_refs \u003d self.identity_api.list_users_in_group("},{"line_number":732,"context_line":"            group_id, domain_id)"},{"line_number":733,"context_line":"        self.identity_api.delete_group(group_id, domain_id)"},{"line_number":734,"context_line":"        for user in user_refs:"},{"line_number":735,"context_line":"            self._delete_tokens_for_user(user[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FHrs%3D","line":732,"updated":"2013-08-06 22:42:52.000000000","message":"use named parameter for named argument... domain_scope\u003ddomain_id","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"63e20794984f026022e2d75937bcb3b856535927","unresolved":false,"context_lines":[{"line_number":729,"context_line":""},{"line_number":730,"context_line":"        domain_id \u003d self._get_domain_id_for_request(context)"},{"line_number":731,"context_line":"        user_refs \u003d self.identity_api.list_users_in_group("},{"line_number":732,"context_line":"            group_id, domain_id)"},{"line_number":733,"context_line":"        self.identity_api.delete_group(group_id, domain_id)"},{"line_number":734,"context_line":"        for user in user_refs:"},{"line_number":735,"context_line":"            self._delete_tokens_for_user(user[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FFWE%3D","line":732,"in_reply_to":"AAAAQn%2F%2FHrs%3D","updated":"2013-08-07 14:24:24.000000000","message":"Done","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"323ef5b1d2b24653b8d6ffd9564ba5d99c43e384","unresolved":false,"context_lines":[{"line_number":730,"context_line":"        domain_id \u003d self._get_domain_id_for_request(context)"},{"line_number":731,"context_line":"        user_refs \u003d self.identity_api.list_users_in_group("},{"line_number":732,"context_line":"            group_id, domain_id)"},{"line_number":733,"context_line":"        self.identity_api.delete_group(group_id, domain_id)"},{"line_number":734,"context_line":"        for user in user_refs:"},{"line_number":735,"context_line":"            self._delete_tokens_for_user(user[\u0027id\u0027])"},{"line_number":736,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FHro%3D","line":733,"updated":"2013-08-06 22:42:52.000000000","message":"use named parameter for named argument... domain_scope\u003ddomain_id","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"63e20794984f026022e2d75937bcb3b856535927","unresolved":false,"context_lines":[{"line_number":730,"context_line":"        domain_id \u003d self._get_domain_id_for_request(context)"},{"line_number":731,"context_line":"        user_refs \u003d self.identity_api.list_users_in_group("},{"line_number":732,"context_line":"            group_id, domain_id)"},{"line_number":733,"context_line":"        self.identity_api.delete_group(group_id, domain_id)"},{"line_number":734,"context_line":"        for user in user_refs:"},{"line_number":735,"context_line":"            self._delete_tokens_for_user(user[\u0027id\u0027])"},{"line_number":736,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FFWA%3D","line":733,"in_reply_to":"AAAAQn%2F%2FHro%3D","updated":"2013-08-07 14:24:24.000000000","message":"Done","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"6b611c92242bfbfb55d55c3cb809a966ac983356","unresolved":false,"context_lines":[{"line_number":606,"context_line":"    @controller.filterprotected(\u0027domain_id\u0027, \u0027email\u0027, \u0027enabled\u0027, \u0027name\u0027)"},{"line_number":607,"context_line":"    def list_users(self, context, filters):"},{"line_number":608,"context_line":"        refs \u003d self.identity_api.list_users("},{"line_number":609,"context_line":"            domain_scope\u003dself._get_domain_id_for_request(context))"},{"line_number":610,"context_line":"        return UserV3.wrap_collection(context, refs, filters)"},{"line_number":611,"context_line":""},{"line_number":612,"context_line":"    @controller.filterprotected(\u0027domain_id\u0027, \u0027email\u0027, \u0027enabled\u0027, \u0027name\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAQn%2F%2FAc8%3D","line":609,"updated":"2013-08-08 15:36:06.000000000","message":"Seems clunky.  I wonder if this value should somehow come out of @controller.filterprotected","commit_id":"93eb50081c20a3e94e5c18a5b7bece1729faaa34"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"dffcc662b779521efb96f67503d6447a270afe7d","unresolved":false,"context_lines":[{"line_number":606,"context_line":"    @controller.filterprotected(\u0027domain_id\u0027, \u0027email\u0027, \u0027enabled\u0027, \u0027name\u0027)"},{"line_number":607,"context_line":"    def list_users(self, context, filters):"},{"line_number":608,"context_line":"        refs \u003d self.identity_api.list_users("},{"line_number":609,"context_line":"            domain_scope\u003dself._get_domain_id_for_request(context))"},{"line_number":610,"context_line":"        return UserV3.wrap_collection(context, refs, filters)"},{"line_number":611,"context_line":""},{"line_number":612,"context_line":"    @controller.filterprotected(\u0027domain_id\u0027, \u0027email\u0027, \u0027enabled\u0027, \u0027name\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAQ3%2F%2F%2FrY%3D","line":609,"in_reply_to":"AAAAQn%2F%2FAc8%3D","updated":"2013-08-11 19:55:15.000000000","message":"So it could, since it checks to see if the domain is in the token, by making it pass domain_scope into the wrapped function like it does the filters.  However, I just wonder if that is overloading it too much - since it\u0027s job is really to check protection including filters?  We\u0027d also have to change contoller.protected as well, to also pass in domain_scope","commit_id":"93eb50081c20a3e94e5c18a5b7bece1729faaa34"}],"keystone/identity/core.py":[{"author":{"_account_id":6456,"name":"Sahdev Zala","email":"spzala@us.ibm.com","username":"spzala"},"change_message_id":"2e807fb8cf2874769418c2887820a65cf44de867","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    Provided this feature is enabled, on init the Manager will scan the domain"},{"line_number":69,"context_line":"    config dir for files of the form"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    keystone.\u003cdomain_name\u003e.conf"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    For each of these, the domain_name will be turned into a domain_id and then"},{"line_number":74,"context_line":"    the Manager will:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAQn%2F%2FWbk%3D","line":71,"updated":"2013-08-01 15:45:15.000000000","message":"So \u003cdomain_name\u003e is a valid domain name and a server name as well, right?\nFor multiple domains in a server, we will have a conf file for a server and each of the domains? or a server conf can specify multiple domains? \nI think we are talking about LDAP servers/domains only, right? In that case may be it\u0027s a good idea to reflect that in the name - like keystone.ldap.\u003cdomain_name\u003e.conf?","commit_id":"cd47bb3715c31e978df060ca01336970c89eccca"},{"author":{"_account_id":6456,"name":"Sahdev Zala","email":"spzala@us.ibm.com","username":"spzala"},"change_message_id":"749ce331b6dc36b8e6f6d9bd5087ed98fc460f38","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    Provided this feature is enabled, on init the Manager will scan the domain"},{"line_number":69,"context_line":"    config dir for files of the form"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    keystone.\u003cdomain_name\u003e.conf"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    For each of these, the domain_name will be turned into a domain_id and then"},{"line_number":74,"context_line":"    the Manager will:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAQn%2F%2FWIs%3D","line":71,"in_reply_to":"AAAAQn%2F%2FWOI%3D","updated":"2013-08-01 17:06:42.000000000","message":"Thanks, Henry! Since for each domain there is a conf. file, so for multiple domains in a single server I believe there will be multiple conf. files and each need to have the server detail (e.g. server name, user and password)?","commit_id":"cd47bb3715c31e978df060ca01336970c89eccca"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"1e3d2c5d41338085a4ed929f9d17c169080beea3","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    Provided this feature is enabled, on init the Manager will scan the domain"},{"line_number":69,"context_line":"    config dir for files of the form"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    keystone.\u003cdomain_name\u003e.conf"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    For each of these, the domain_name will be turned into a domain_id and then"},{"line_number":74,"context_line":"    the Manager will:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAQn%2F%2FWOI%3D","line":71,"in_reply_to":"AAAAQn%2F%2FWbk%3D","updated":"2013-08-01 16:48:47.000000000","message":"So it is just a domain name.  If by \u0027server\u0027 you mean LDAP server, well that depends what is in the domain config file - it would specify the LDAP server name if that\u0027s what you wanted (or indeed an SQL DB - since, to answer your second point, you can specify any of the available backends as the one you want for your domain)","commit_id":"cd47bb3715c31e978df060ca01336970c89eccca"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"dc57ad7a2299affb7141495337a02677386479fc","unresolved":false,"context_lines":[{"line_number":157,"context_line":"            self._load_domain_driver(domain_id)"},{"line_number":158,"context_line":"        else:"},{"line_number":159,"context_line":"            # The standard driver"},{"line_number":160,"context_line":"#            self.driver \u003d importutils.import_object(self.driver)"},{"line_number":161,"context_line":"            self.driver \u003d self.driver()"},{"line_number":162,"context_line":"            self.driver.assignment_api \u003d self.assignment_api"},{"line_number":163,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAQn%2F%2FMnQ%3D","line":160,"updated":"2013-08-05 16:27:50.000000000","message":"oops, will remove that.","commit_id":"89b2db3336097d51f513228e2c60c19e5d8dd172"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"342c4da7023334b0a9d66ddb1c26f1d78ecda95f","unresolved":false,"context_lines":[{"line_number":211,"context_line":""},{"line_number":212,"context_line":"        # For creating a user,the domain is in the object itself"},{"line_number":213,"context_line":"        domain_id \u003d user_ref[\u0027domain_id\u0027]"},{"line_number":214,"context_line":"        driver \u003d self._select_driver(domain_id)"},{"line_number":215,"context_line":"        if not driver.is_domain_aware():"},{"line_number":216,"context_line":"            user \u003d self._clear_domain_id(user)"},{"line_number":217,"context_line":"        ref \u003d driver.create_user(user_id, user)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAQn%2F%2FMkk%3D","line":214,"updated":"2013-08-05 16:49:39.000000000","message":"It is not really clear which driver you are selecting here.  Suggest  self._select_driver(domain_id) becomes self._select_id_driver(domain_id)","commit_id":"89b2db3336097d51f513228e2c60c19e5d8dd172"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"280fc37718656e53a1ab32423a094f52a98e6f68","unresolved":false,"context_lines":[{"line_number":211,"context_line":""},{"line_number":212,"context_line":"        # For creating a user,the domain is in the object itself"},{"line_number":213,"context_line":"        domain_id \u003d user_ref[\u0027domain_id\u0027]"},{"line_number":214,"context_line":"        driver \u003d self._select_driver(domain_id)"},{"line_number":215,"context_line":"        if not driver.is_domain_aware():"},{"line_number":216,"context_line":"            user \u003d self._clear_domain_id(user)"},{"line_number":217,"context_line":"        ref \u003d driver.create_user(user_id, user)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAQn%2F%2FMOU%3D","line":214,"in_reply_to":"AAAAQn%2F%2FMkk%3D","updated":"2013-08-05 18:07:08.000000000","message":"Done","commit_id":"89b2db3336097d51f513228e2c60c19e5d8dd172"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"342c4da7023334b0a9d66ddb1c26f1d78ecda95f","unresolved":false,"context_lines":[{"line_number":212,"context_line":"        # For creating a user,the domain is in the object itself"},{"line_number":213,"context_line":"        domain_id \u003d user_ref[\u0027domain_id\u0027]"},{"line_number":214,"context_line":"        driver \u003d self._select_driver(domain_id)"},{"line_number":215,"context_line":"        if not driver.is_domain_aware():"},{"line_number":216,"context_line":"            user \u003d self._clear_domain_id(user)"},{"line_number":217,"context_line":"        ref \u003d driver.create_user(user_id, user)"},{"line_number":218,"context_line":"        if not driver.is_domain_aware():"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAQn%2F%2FMkU%3D","line":215,"updated":"2013-08-05 16:49:39.000000000","message":"This function really belongs on the driver, but I suspect it is here for backwards compat.","commit_id":"89b2db3336097d51f513228e2c60c19e5d8dd172"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"280fc37718656e53a1ab32423a094f52a98e6f68","unresolved":false,"context_lines":[{"line_number":212,"context_line":"        # For creating a user,the domain is in the object itself"},{"line_number":213,"context_line":"        domain_id \u003d user_ref[\u0027domain_id\u0027]"},{"line_number":214,"context_line":"        driver \u003d self._select_driver(domain_id)"},{"line_number":215,"context_line":"        if not driver.is_domain_aware():"},{"line_number":216,"context_line":"            user \u003d self._clear_domain_id(user)"},{"line_number":217,"context_line":"        ref \u003d driver.create_user(user_id, user)"},{"line_number":218,"context_line":"        if not driver.is_domain_aware():"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAQn%2F%2FMOI%3D","line":215,"in_reply_to":"AAAAQn%2F%2FMkU%3D","updated":"2013-08-05 18:07:08.000000000","message":"could you expand on what you mean by \"belongs on the driver\"?","commit_id":"89b2db3336097d51f513228e2c60c19e5d8dd172"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"342c4da7023334b0a9d66ddb1c26f1d78ecda95f","unresolved":false,"context_lines":[{"line_number":262,"context_line":"        domain_id \u003d self._normalize_scope(domain_scope)"},{"line_number":263,"context_line":"        self._select_driver(domain_id).delete_user(user_id)"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"    # TODO(henry-nash) To the same as the above for all the other identity"},{"line_number":266,"context_line":"    # calls."},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"    def create_group(self, group_id, group_ref):"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAQn%2F%2FMkA%3D","line":265,"updated":"2013-08-05 16:49:39.000000000","message":"To-\u003eDo","commit_id":"89b2db3336097d51f513228e2c60c19e5d8dd172"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"280fc37718656e53a1ab32423a094f52a98e6f68","unresolved":false,"context_lines":[{"line_number":262,"context_line":"        domain_id \u003d self._normalize_scope(domain_scope)"},{"line_number":263,"context_line":"        self._select_driver(domain_id).delete_user(user_id)"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"    # TODO(henry-nash) To the same as the above for all the other identity"},{"line_number":266,"context_line":"    # calls."},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"    def create_group(self, group_id, group_ref):"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAQn%2F%2FMOg%3D","line":265,"in_reply_to":"AAAAQn%2F%2FMkA%3D","updated":"2013-08-05 18:07:08.000000000","message":"In, fact I can delete the whole comment, since I have now done this.","commit_id":"89b2db3336097d51f513228e2c60c19e5d8dd172"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"323ef5b1d2b24653b8d6ffd9564ba5d99c43e384","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    See :mod:`keystone.common.manager.Manager` for more details on how this"},{"line_number":65,"context_line":"    dynamically calls the backend."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    The identity manager handles the support of domain specific backends."},{"line_number":68,"context_line":"    Provided this feature is enabled, on init the Manager will scan the domain"},{"line_number":69,"context_line":"    config dir for files of the form"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FHrU%3D","line":67,"updated":"2013-08-06 22:42:52.000000000","message":"change \"The identity manager\" to \"This class\" so it\u0027s obvious this is referring to this class and not some other class.","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"63e20794984f026022e2d75937bcb3b856535927","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    See :mod:`keystone.common.manager.Manager` for more details on how this"},{"line_number":65,"context_line":"    dynamically calls the backend."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    The identity manager handles the support of domain specific backends."},{"line_number":68,"context_line":"    Provided this feature is enabled, on init the Manager will scan the domain"},{"line_number":69,"context_line":"    config dir for files of the form"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FFVk%3D","line":67,"in_reply_to":"AAAAQn%2F%2FHrU%3D","updated":"2013-08-07 14:24:24.000000000","message":"Done","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"323ef5b1d2b24653b8d6ffd9564ba5d99c43e384","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    The identity manager handles the support of domain specific backends."},{"line_number":68,"context_line":"    Provided this feature is enabled, on init the Manager will scan the domain"},{"line_number":69,"context_line":"    config dir for files of the form"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    keystone.\u003cdomain_name\u003e.conf"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FHrQ%3D","line":69,"updated":"2013-08-06 22:42:52.000000000","message":"change \"dir\" to \"directory\"","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"63e20794984f026022e2d75937bcb3b856535927","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    The identity manager handles the support of domain specific backends."},{"line_number":68,"context_line":"    Provided this feature is enabled, on init the Manager will scan the domain"},{"line_number":69,"context_line":"    config dir for files of the form"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    keystone.\u003cdomain_name\u003e.conf"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FFVc%3D","line":69,"in_reply_to":"AAAAQn%2F%2FHrQ%3D","updated":"2013-08-07 14:24:24.000000000","message":"Done","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"323ef5b1d2b24653b8d6ffd9564ba5d99c43e384","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    keystone.\u003cdomain_name\u003e.conf"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    For each of these, the domain_name will be turned into a domain_id and then"},{"line_number":74,"context_line":"    the Manager will:"},{"line_number":75,"context_line":"    - Create a new config structure, adding in the specific additional options"},{"line_number":76,"context_line":"      defined in this config file"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FHrE%3D","line":73,"updated":"2013-08-06 22:42:52.000000000","message":"change \"of these\" to \"file\"","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"63e20794984f026022e2d75937bcb3b856535927","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    keystone.\u003cdomain_name\u003e.conf"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    For each of these, the domain_name will be turned into a domain_id and then"},{"line_number":74,"context_line":"    the Manager will:"},{"line_number":75,"context_line":"    - Create a new config structure, adding in the specific additional options"},{"line_number":76,"context_line":"      defined in this config file"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FFVY%3D","line":73,"in_reply_to":"AAAAQn%2F%2FHrE%3D","updated":"2013-08-07 14:24:24.000000000","message":"Done","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"323ef5b1d2b24653b8d6ffd9564ba5d99c43e384","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    keystone.\u003cdomain_name\u003e.conf"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    For each of these, the domain_name will be turned into a domain_id and then"},{"line_number":74,"context_line":"    the Manager will:"},{"line_number":75,"context_line":"    - Create a new config structure, adding in the specific additional options"},{"line_number":76,"context_line":"      defined in this config file"},{"line_number":77,"context_line":"    - Initialise a new instance of the required driver with this new config"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FHrA%3D","line":74,"updated":"2013-08-06 22:42:52.000000000","message":"change \"the Manager\" to \"this class\"","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"63e20794984f026022e2d75937bcb3b856535927","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    keystone.\u003cdomain_name\u003e.conf"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    For each of these, the domain_name will be turned into a domain_id and then"},{"line_number":74,"context_line":"    the Manager will:"},{"line_number":75,"context_line":"    - Create a new config structure, adding in the specific additional options"},{"line_number":76,"context_line":"      defined in this config file"},{"line_number":77,"context_line":"    - Initialise a new instance of the required driver with this new config"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FFVU%3D","line":74,"in_reply_to":"AAAAQn%2F%2FHrA%3D","updated":"2013-08-07 14:24:24.000000000","message":"Done","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"323ef5b1d2b24653b8d6ffd9564ba5d99c43e384","unresolved":false,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    # Domain backend management methods"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def _load_domain_driver(self, domain_id):"},{"line_number":95,"context_line":"        self.domain_configs[domain_id][\u0027driver\u0027] \u003d ("},{"line_number":96,"context_line":"            importutils.import_object("},{"line_number":97,"context_line":"                self.domain_configs[domain_id][\u0027cfg\u0027].identity.driver,"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FHnQ%3D","line":94,"updated":"2013-08-06 22:42:52.000000000","message":"suggest do\n\n domain_config \u003d self.domain_configs[domain_id]\n\nso don\u0027t need to use self.domain_configs[domain_id] on every line.","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"63e20794984f026022e2d75937bcb3b856535927","unresolved":false,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    # Domain backend management methods"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def _load_domain_driver(self, domain_id):"},{"line_number":95,"context_line":"        self.domain_configs[domain_id][\u0027driver\u0027] \u003d ("},{"line_number":96,"context_line":"            importutils.import_object("},{"line_number":97,"context_line":"                self.domain_configs[domain_id][\u0027cfg\u0027].identity.driver,"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FFVM%3D","line":94,"in_reply_to":"AAAAQn%2F%2FHnQ%3D","updated":"2013-08-07 14:24:24.000000000","message":"Done","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"323ef5b1d2b24653b8d6ffd9564ba5d99c43e384","unresolved":false,"context_lines":[{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def _setup_domain_drivers(self):"},{"line_number":124,"context_line":"        if os.path.exists(CONF.identity.domain_config_dir):"},{"line_number":125,"context_line":"            conf_dir \u003d CONF.identity.domain_config_dir"},{"line_number":126,"context_line":"        else:"},{"line_number":127,"context_line":"            msg \u003d (_(\u0027Unable to locate domain config \u0027"},{"line_number":128,"context_line":"                     \u0027dir: %s\u0027) % CONF.identity.domain_config_dir)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FHn0%3D","line":125,"updated":"2013-08-06 22:42:52.000000000","message":"suggest do conf_dir \u003d CONF.identity.domain_config_dir at start of function and use that instead of CONF.identity.domain_config_dir to make this a little more readable.","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"63e20794984f026022e2d75937bcb3b856535927","unresolved":false,"context_lines":[{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def _setup_domain_drivers(self):"},{"line_number":124,"context_line":"        if os.path.exists(CONF.identity.domain_config_dir):"},{"line_number":125,"context_line":"            conf_dir \u003d CONF.identity.domain_config_dir"},{"line_number":126,"context_line":"        else:"},{"line_number":127,"context_line":"            msg \u003d (_(\u0027Unable to locate domain config \u0027"},{"line_number":128,"context_line":"                     \u0027dir: %s\u0027) % CONF.identity.domain_config_dir)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FFUc%3D","line":125,"in_reply_to":"AAAAQn%2F%2FHn0%3D","updated":"2013-08-07 14:24:24.000000000","message":"Done","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"323ef5b1d2b24653b8d6ffd9564ba5d99c43e384","unresolved":false,"context_lines":[{"line_number":125,"context_line":"            conf_dir \u003d CONF.identity.domain_config_dir"},{"line_number":126,"context_line":"        else:"},{"line_number":127,"context_line":"            msg \u003d (_(\u0027Unable to locate domain config \u0027"},{"line_number":128,"context_line":"                     \u0027dir: %s\u0027) % CONF.identity.domain_config_dir)"},{"line_number":129,"context_line":"            LOG.warning(msg)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        for r, d, f in os.walk(conf_dir):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FHow%3D","line":128,"updated":"2013-08-06 22:42:52.000000000","message":"change \"dir\" to \"directory\" for translation","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"63e20794984f026022e2d75937bcb3b856535927","unresolved":false,"context_lines":[{"line_number":125,"context_line":"            conf_dir \u003d CONF.identity.domain_config_dir"},{"line_number":126,"context_line":"        else:"},{"line_number":127,"context_line":"            msg \u003d (_(\u0027Unable to locate domain config \u0027"},{"line_number":128,"context_line":"                     \u0027dir: %s\u0027) % CONF.identity.domain_config_dir)"},{"line_number":129,"context_line":"            LOG.warning(msg)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        for r, d, f in os.walk(conf_dir):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FFUI%3D","line":128,"in_reply_to":"AAAAQn%2F%2FHow%3D","updated":"2013-08-07 14:24:24.000000000","message":"Done","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"323ef5b1d2b24653b8d6ffd9564ba5d99c43e384","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        else:"},{"line_number":127,"context_line":"            msg \u003d (_(\u0027Unable to locate domain config \u0027"},{"line_number":128,"context_line":"                     \u0027dir: %s\u0027) % CONF.identity.domain_config_dir)"},{"line_number":129,"context_line":"            LOG.warning(msg)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        for r, d, f in os.walk(conf_dir):"},{"line_number":132,"context_line":"            for file in f:"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FHog%3D","line":129,"updated":"2013-08-06 22:42:52.000000000","message":"meant to return here since conf_dir doesn\u0027t exist?","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"63e20794984f026022e2d75937bcb3b856535927","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        else:"},{"line_number":127,"context_line":"            msg \u003d (_(\u0027Unable to locate domain config \u0027"},{"line_number":128,"context_line":"                     \u0027dir: %s\u0027) % CONF.identity.domain_config_dir)"},{"line_number":129,"context_line":"            LOG.warning(msg)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        for r, d, f in os.walk(conf_dir):"},{"line_number":132,"context_line":"            for file in f:"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FFT8%3D","line":129,"in_reply_to":"AAAAQn%2F%2FHog%3D","updated":"2013-08-07 14:24:24.000000000","message":"Done","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"323ef5b1d2b24653b8d6ffd9564ba5d99c43e384","unresolved":false,"context_lines":[{"line_number":134,"context_line":"                    names \u003d file.split(\u0027.\u0027)"},{"line_number":135,"context_line":"                    if len(names) \u003d\u003d 3:"},{"line_number":136,"context_line":"                        self._load_domain_config([os.path.join(r, file)],"},{"line_number":137,"context_line":"                                                 names[1])"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def _select_identity_driver(self, domain_id):"},{"line_number":140,"context_line":"        if domain_id in self.domain_configs:"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FHos%3D","line":137,"updated":"2013-08-06 22:42:52.000000000","message":"handle case when len(names) !\u003d 3.","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"63e20794984f026022e2d75937bcb3b856535927","unresolved":false,"context_lines":[{"line_number":134,"context_line":"                    names \u003d file.split(\u0027.\u0027)"},{"line_number":135,"context_line":"                    if len(names) \u003d\u003d 3:"},{"line_number":136,"context_line":"                        self._load_domain_config([os.path.join(r, file)],"},{"line_number":137,"context_line":"                                                 names[1])"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def _select_identity_driver(self, domain_id):"},{"line_number":140,"context_line":"        if domain_id in self.domain_configs:"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FFTo%3D","line":137,"in_reply_to":"AAAAQn%2F%2FHos%3D","updated":"2013-08-07 14:24:24.000000000","message":"So I was intending to be silent for those, since we can\u0027t guarantee that the directory only holds domain config files - for instance if it also had the primary keystone.conf file in, then logging warnings might be somewhat repetitive.  However, perhaps a debug log would be appropriate.","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"323ef5b1d2b24653b8d6ffd9564ba5d99c43e384","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def _select_identity_driver(self, domain_id):"},{"line_number":140,"context_line":"        if domain_id in self.domain_configs:"},{"line_number":141,"context_line":"            driver \u003d self.domain_configs[domain_id][\u0027driver\u0027]"},{"line_number":142,"context_line":"        else:"},{"line_number":143,"context_line":"            driver \u003d self.driver"},{"line_number":144,"context_line":"        return driver"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FHnM%3D","line":141,"updated":"2013-08-06 22:42:52.000000000","message":"just return self.domain_configs[domain_id][\u0027driver\u0027]","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"63e20794984f026022e2d75937bcb3b856535927","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def _select_identity_driver(self, domain_id):"},{"line_number":140,"context_line":"        if domain_id in self.domain_configs:"},{"line_number":141,"context_line":"            driver \u003d self.domain_configs[domain_id][\u0027driver\u0027]"},{"line_number":142,"context_line":"        else:"},{"line_number":143,"context_line":"            driver \u003d self.driver"},{"line_number":144,"context_line":"        return driver"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FFRk%3D","line":141,"in_reply_to":"AAAAQn%2F%2FHnM%3D","updated":"2013-08-07 14:24:24.000000000","message":"Done","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"323ef5b1d2b24653b8d6ffd9564ba5d99c43e384","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        if domain_id in self.domain_configs:"},{"line_number":141,"context_line":"            driver \u003d self.domain_configs[domain_id][\u0027driver\u0027]"},{"line_number":142,"context_line":"        else:"},{"line_number":143,"context_line":"            driver \u003d self.driver"},{"line_number":144,"context_line":"        return driver"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def _get_domain_conf(self, domain_id):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FHnE%3D","line":143,"updated":"2013-08-06 22:42:52.000000000","message":"just return self.driver","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"63e20794984f026022e2d75937bcb3b856535927","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        if domain_id in self.domain_configs:"},{"line_number":141,"context_line":"            driver \u003d self.domain_configs[domain_id][\u0027driver\u0027]"},{"line_number":142,"context_line":"        else:"},{"line_number":143,"context_line":"            driver \u003d self.driver"},{"line_number":144,"context_line":"        return driver"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def _get_domain_conf(self, domain_id):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FFRg%3D","line":143,"in_reply_to":"AAAAQn%2F%2FHnE%3D","updated":"2013-08-07 14:24:24.000000000","message":"Done","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"323ef5b1d2b24653b8d6ffd9564ba5d99c43e384","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def _get_domain_conf(self, domain_id):"},{"line_number":147,"context_line":"        if domain_id in self.domain_configs:"},{"line_number":148,"context_line":"            conf \u003d self.domain_configs[domain_id][\u0027cfg\u0027]"},{"line_number":149,"context_line":"        else:"},{"line_number":150,"context_line":"            conf \u003d CONF"},{"line_number":151,"context_line":"        return conf"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FHms%3D","line":148,"updated":"2013-08-06 22:42:52.000000000","message":"just return self.domain_configs[domain_id][\u0027cfg\u0027]","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"63e20794984f026022e2d75937bcb3b856535927","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def _get_domain_conf(self, domain_id):"},{"line_number":147,"context_line":"        if domain_id in self.domain_configs:"},{"line_number":148,"context_line":"            conf \u003d self.domain_configs[domain_id][\u0027cfg\u0027]"},{"line_number":149,"context_line":"        else:"},{"line_number":150,"context_line":"            conf \u003d CONF"},{"line_number":151,"context_line":"        return conf"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FFRY%3D","line":148,"in_reply_to":"AAAAQn%2F%2FHms%3D","updated":"2013-08-07 14:24:24.000000000","message":"Done","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"323ef5b1d2b24653b8d6ffd9564ba5d99c43e384","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        if domain_id in self.domain_configs:"},{"line_number":148,"context_line":"            conf \u003d self.domain_configs[domain_id][\u0027cfg\u0027]"},{"line_number":149,"context_line":"        else:"},{"line_number":150,"context_line":"            conf \u003d CONF"},{"line_number":151,"context_line":"        return conf"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    def _reload_domain_driver(self, domain_id):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FHmk%3D","line":150,"updated":"2013-08-06 22:42:52.000000000","message":"just return CONF","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"63e20794984f026022e2d75937bcb3b856535927","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        if domain_id in self.domain_configs:"},{"line_number":148,"context_line":"            conf \u003d self.domain_configs[domain_id][\u0027cfg\u0027]"},{"line_number":149,"context_line":"        else:"},{"line_number":150,"context_line":"            conf \u003d CONF"},{"line_number":151,"context_line":"        return conf"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    def _reload_domain_driver(self, domain_id):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FFRc%3D","line":150,"in_reply_to":"AAAAQn%2F%2FHmk%3D","updated":"2013-08-07 14:24:24.000000000","message":"Done","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"323ef5b1d2b24653b8d6ffd9564ba5d99c43e384","unresolved":false,"context_lines":[{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    def _normalize_scope(self, domain_scope):"},{"line_number":187,"context_line":"        if domain_scope is None:"},{"line_number":188,"context_line":"            domain_scope \u003d CONF.identity.default_domain_id"},{"line_number":189,"context_line":"        return domain_scope"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    # The actual driver calls - these are pre/post processed here as"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FHsQ%3D","line":188,"updated":"2013-08-06 22:42:52.000000000","message":"just return CONF.identity.default_domain_id","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"63e20794984f026022e2d75937bcb3b856535927","unresolved":false,"context_lines":[{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    def _normalize_scope(self, domain_scope):"},{"line_number":187,"context_line":"        if domain_scope is None:"},{"line_number":188,"context_line":"            domain_scope \u003d CONF.identity.default_domain_id"},{"line_number":189,"context_line":"        return domain_scope"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    # The actual driver calls - these are pre/post processed here as"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FFQU%3D","line":188,"in_reply_to":"AAAAQn%2F%2FHsQ%3D","updated":"2013-08-07 14:24:24.000000000","message":"Done","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"323ef5b1d2b24653b8d6ffd9564ba5d99c43e384","unresolved":false,"context_lines":[{"line_number":277,"context_line":""},{"line_number":278,"context_line":"    def get_group(self, group_id, domain_scope\u003dNone):"},{"line_number":279,"context_line":"        domain_id \u003d self._normalize_scope(domain_scope)"},{"line_number":280,"context_line":"        driver \u003d self._select_identity_driver(domain_id)"},{"line_number":281,"context_line":"        ref \u003d driver.get_group(group_id)"},{"line_number":282,"context_line":"        if not driver.is_domain_aware():"},{"line_number":283,"context_line":"            ref \u003d self._set_domain_id(ref, domain_id)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FHjg%3D","line":280,"updated":"2013-08-06 22:42:52.000000000","message":"these 2 lines are copy/pasted several times, suggest move them to a method.","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"63e20794984f026022e2d75937bcb3b856535927","unresolved":false,"context_lines":[{"line_number":277,"context_line":""},{"line_number":278,"context_line":"    def get_group(self, group_id, domain_scope\u003dNone):"},{"line_number":279,"context_line":"        domain_id \u003d self._normalize_scope(domain_scope)"},{"line_number":280,"context_line":"        driver \u003d self._select_identity_driver(domain_id)"},{"line_number":281,"context_line":"        ref \u003d driver.get_group(group_id)"},{"line_number":282,"context_line":"        if not driver.is_domain_aware():"},{"line_number":283,"context_line":"            ref \u003d self._set_domain_id(ref, domain_id)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FFPw%3D","line":280,"in_reply_to":"AAAAQn%2F%2FHjg%3D","updated":"2013-08-07 14:24:24.000000000","message":"Done","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"6b611c92242bfbfb55d55c3cb809a966ac983356","unresolved":false,"context_lines":[{"line_number":60,"context_line":"def domains_configured(f):"},{"line_number":61,"context_line":"    \"\"\"Wraps API calls to lazy load domain configs after init."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    This is required since the assignment manager needs to initialized"},{"line_number":64,"context_line":"    before this manager, and yet this manager\u0027s init wants to be"},{"line_number":65,"context_line":"    able to make assignment calls (to build the domain configs).  So"},{"line_number":66,"context_line":"    instead, we check if the domains have been initialized o entry"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAQn%2F%2FAao%3D","line":63,"updated":"2013-08-08 15:36:06.000000000","message":"\u0027needs to be\u0027","commit_id":"93eb50081c20a3e94e5c18a5b7bece1729faaa34"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"dffcc662b779521efb96f67503d6447a270afe7d","unresolved":false,"context_lines":[{"line_number":60,"context_line":"def domains_configured(f):"},{"line_number":61,"context_line":"    \"\"\"Wraps API calls to lazy load domain configs after init."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    This is required since the assignment manager needs to initialized"},{"line_number":64,"context_line":"    before this manager, and yet this manager\u0027s init wants to be"},{"line_number":65,"context_line":"    able to make assignment calls (to build the domain configs).  So"},{"line_number":66,"context_line":"    instead, we check if the domains have been initialized o entry"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAQ3%2F%2F%2FrQ%3D","line":63,"in_reply_to":"AAAAQn%2F%2FAao%3D","updated":"2013-08-11 19:55:15.000000000","message":"Done","commit_id":"93eb50081c20a3e94e5c18a5b7bece1729faaa34"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"6b611c92242bfbfb55d55c3cb809a966ac983356","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    This is required since the assignment manager needs to initialized"},{"line_number":64,"context_line":"    before this manager, and yet this manager\u0027s init wants to be"},{"line_number":65,"context_line":"    able to make assignment calls (to build the domain configs).  So"},{"line_number":66,"context_line":"    instead, we check if the domains have been initialized o entry"},{"line_number":67,"context_line":"    to each call, and if requires load them,"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAQn%2F%2FAaY%3D","line":66,"updated":"2013-08-08 15:36:06.000000000","message":"o -\u003e on","commit_id":"93eb50081c20a3e94e5c18a5b7bece1729faaa34"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"dffcc662b779521efb96f67503d6447a270afe7d","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    This is required since the assignment manager needs to initialized"},{"line_number":64,"context_line":"    before this manager, and yet this manager\u0027s init wants to be"},{"line_number":65,"context_line":"    able to make assignment calls (to build the domain configs).  So"},{"line_number":66,"context_line":"    instead, we check if the domains have been initialized o entry"},{"line_number":67,"context_line":"    to each call, and if requires load them,"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAQ3%2F%2F%2FrM%3D","line":66,"in_reply_to":"AAAAQn%2F%2FAaY%3D","updated":"2013-08-11 19:55:15.000000000","message":"Done","commit_id":"93eb50081c20a3e94e5c18a5b7bece1729faaa34"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"6b611c92242bfbfb55d55c3cb809a966ac983356","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    before this manager, and yet this manager\u0027s init wants to be"},{"line_number":65,"context_line":"    able to make assignment calls (to build the domain configs).  So"},{"line_number":66,"context_line":"    instead, we check if the domains have been initialized o entry"},{"line_number":67,"context_line":"    to each call, and if requires load them,"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    \"\"\""},{"line_number":70,"context_line":"    @functools.wraps(f)"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAQn%2F%2FAaE%3D","line":67,"updated":"2013-08-08 15:36:06.000000000","message":"is this going to be in the hot path?  It might have a performance implication.  Can you get this down to a single boolean check after the first time it is called?  Or, even better, somehow make it an object that is lazy created, so that the hot path is optimized.","commit_id":"93eb50081c20a3e94e5c18a5b7bece1729faaa34"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"dffcc662b779521efb96f67503d6447a270afe7d","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    before this manager, and yet this manager\u0027s init wants to be"},{"line_number":65,"context_line":"    able to make assignment calls (to build the domain configs).  So"},{"line_number":66,"context_line":"    instead, we check if the domains have been initialized o entry"},{"line_number":67,"context_line":"    to each call, and if requires load them,"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    \"\"\""},{"line_number":70,"context_line":"    @functools.wraps(f)"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAQ3%2F%2F%2Fq8%3D","line":67,"in_reply_to":"AAAAQn%2F%2FAaE%3D","updated":"2013-08-11 19:55:15.000000000","message":"So once the first call has been made, the domain_configs will be created, so won\u0027t the first boolean check do exactly that (which is why I check it first)?  I must admit, not sure if the wrapper semantics creates other overhead?","commit_id":"93eb50081c20a3e94e5c18a5b7bece1729faaa34"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"6b611c92242bfbfb55d55c3cb809a966ac983356","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    # Domain backend management methods"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    def _load_domain_driver(self, domain_id):"},{"line_number":114,"context_line":"        domain_config \u003d self.domain_configs[domain_id]"},{"line_number":115,"context_line":"        domain_config[\u0027driver\u0027] \u003d ("},{"line_number":116,"context_line":"            importutils.import_object("}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAQn%2F%2FAZI%3D","line":113,"updated":"2013-08-08 15:36:06.000000000","message":"I would prefer it if the configuration and management of the domains was its own class, and not internal functions to the Manager.","commit_id":"93eb50081c20a3e94e5c18a5b7bece1729faaa34"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"dffcc662b779521efb96f67503d6447a270afe7d","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    # Domain backend management methods"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    def _load_domain_driver(self, domain_id):"},{"line_number":114,"context_line":"        domain_config \u003d self.domain_configs[domain_id]"},{"line_number":115,"context_line":"        domain_config[\u0027driver\u0027] \u003d ("},{"line_number":116,"context_line":"            importutils.import_object("}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAQ3%2F%2F%2FnU%3D","line":113,"in_reply_to":"AAAAQn%2F%2FAZI%3D","updated":"2013-08-11 19:55:15.000000000","message":"Done","commit_id":"93eb50081c20a3e94e5c18a5b7bece1729faaa34"},{"author":{"_account_id":6771,"name":"tiago-martins","email":"tiago.ferraz@gmail.com","username":"tiago-martins"},"change_message_id":"62d1c043ade01f178c00ff52410a6b5e4fd58034","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    return user_ref"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"class domain_configs(dict):"},{"line_number":61,"context_line":"    \"\"\"Discover, store and provide access to domain specifc configs."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    The setup_domain_drives() call will be made via the wrapper from"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAQ3%2F%2F3UY%3D","line":60,"updated":"2013-08-13 19:53:32.000000000","message":"any reason for the class name not to follow pep8?","commit_id":"7c862d4753ebbdd10c8adf080dd14465492c63e8"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"178369bdd2e7a19eedc863438b0c84ea125c1d44","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    return user_ref"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"class domain_configs(dict):"},{"line_number":61,"context_line":"    \"\"\"Discover, store and provide access to domain specifc configs."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    The setup_domain_drives() call will be made via the wrapper from"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAQ3%2F%2F2iQ%3D","line":60,"in_reply_to":"AAAAQ3%2F%2F3UY%3D","updated":"2013-08-13 22:52:58.000000000","message":"Excellent point.  Will upload new patch that fixes this.","commit_id":"7c862d4753ebbdd10c8adf080dd14465492c63e8"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"67a4818985d3bc8ec9a0a862abf80cee27b777de","unresolved":false,"context_lines":[{"line_number":146,"context_line":"            else:"},{"line_number":147,"context_line":"                # The standard driver"},{"line_number":148,"context_line":"                self.driver \u003d self.driver()"},{"line_number":149,"context_line":"                self.driver.assignment_api \u003d assignment_api"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"def domains_configured(f):"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAARH%2F%2F7tk%3D","line":149,"updated":"2013-08-15 01:01:44.000000000","message":"why doesn\u0027t this function do anything if not self.configured? suggest add a comment.","commit_id":"1570c6932f3c3254cbdc5de2b07b49920479fad6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"babc0963e1642c8b7897a98ea6b87e63117ca4c5","unresolved":false,"context_lines":[{"line_number":146,"context_line":"            else:"},{"line_number":147,"context_line":"                # The standard driver"},{"line_number":148,"context_line":"                self.driver \u003d self.driver()"},{"line_number":149,"context_line":"                self.driver.assignment_api \u003d assignment_api"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"def domains_configured(f):"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAARH%2F%2F6lk%3D","line":149,"in_reply_to":"AAAARH%2F%2F7tk%3D","updated":"2013-08-15 09:20:39.000000000","message":"Done","commit_id":"1570c6932f3c3254cbdc5de2b07b49920479fad6"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"67a4818985d3bc8ec9a0a862abf80cee27b777de","unresolved":false,"context_lines":[{"line_number":180,"context_line":"    This class also handles the support of domain specific backends, by using"},{"line_number":181,"context_line":"    the DomainConfigs class. The setup call for DomainConfigs is called"},{"line_number":182,"context_line":"    from with the @domains_configured wrapper in a lazy loading fashion"},{"line_number":183,"context_line":"    to get round the fact that we can\u0027t satisfy the assignment api it needs"},{"line_number":184,"context_line":"    from within our __init__() fucntion since the assignment driver is not"},{"line_number":185,"context_line":"    itself yet intitalized."},{"line_number":186,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAARH%2F%2F7sc%3D","line":183,"updated":"2013-08-15 01:01:44.000000000","message":"change \"round\" to \"around\"","commit_id":"1570c6932f3c3254cbdc5de2b07b49920479fad6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"babc0963e1642c8b7897a98ea6b87e63117ca4c5","unresolved":false,"context_lines":[{"line_number":180,"context_line":"    This class also handles the support of domain specific backends, by using"},{"line_number":181,"context_line":"    the DomainConfigs class. The setup call for DomainConfigs is called"},{"line_number":182,"context_line":"    from with the @domains_configured wrapper in a lazy loading fashion"},{"line_number":183,"context_line":"    to get round the fact that we can\u0027t satisfy the assignment api it needs"},{"line_number":184,"context_line":"    from within our __init__() fucntion since the assignment driver is not"},{"line_number":185,"context_line":"    itself yet intitalized."},{"line_number":186,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAARH%2F%2F6lg%3D","line":183,"in_reply_to":"AAAARH%2F%2F7sc%3D","updated":"2013-08-15 09:20:39.000000000","message":"Done","commit_id":"1570c6932f3c3254cbdc5de2b07b49920479fad6"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"67a4818985d3bc8ec9a0a862abf80cee27b777de","unresolved":false,"context_lines":[{"line_number":181,"context_line":"    the DomainConfigs class. The setup call for DomainConfigs is called"},{"line_number":182,"context_line":"    from with the @domains_configured wrapper in a lazy loading fashion"},{"line_number":183,"context_line":"    to get round the fact that we can\u0027t satisfy the assignment api it needs"},{"line_number":184,"context_line":"    from within our __init__() fucntion since the assignment driver is not"},{"line_number":185,"context_line":"    itself yet intitalized."},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    Each of the identity calls are then pre-processed here to choose, based on"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAARH%2F%2F7sQ%3D","line":184,"updated":"2013-08-15 01:01:44.000000000","message":"change \"fucntion\" to \"function\"","commit_id":"1570c6932f3c3254cbdc5de2b07b49920479fad6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"babc0963e1642c8b7897a98ea6b87e63117ca4c5","unresolved":false,"context_lines":[{"line_number":181,"context_line":"    the DomainConfigs class. The setup call for DomainConfigs is called"},{"line_number":182,"context_line":"    from with the @domains_configured wrapper in a lazy loading fashion"},{"line_number":183,"context_line":"    to get round the fact that we can\u0027t satisfy the assignment api it needs"},{"line_number":184,"context_line":"    from within our __init__() fucntion since the assignment driver is not"},{"line_number":185,"context_line":"    itself yet intitalized."},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    Each of the identity calls are then pre-processed here to choose, based on"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAARH%2F%2F6lc%3D","line":184,"in_reply_to":"AAAARH%2F%2F7sQ%3D","updated":"2013-08-15 09:20:39.000000000","message":"Done","commit_id":"1570c6932f3c3254cbdc5de2b07b49920479fad6"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"67a4818985d3bc8ec9a0a862abf80cee27b777de","unresolved":false,"context_lines":[{"line_number":184,"context_line":"    from within our __init__() fucntion since the assignment driver is not"},{"line_number":185,"context_line":"    itself yet intitalized."},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    Each of the identity calls are then pre-processed here to choose, based on"},{"line_number":188,"context_line":"    domain, which of the drivers should be called. The non-domain-specific"},{"line_number":189,"context_line":"    driver is still in place, and is used if there is no specific driver for"},{"line_number":190,"context_line":"    the domain in question."}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAARH%2F%2F7sM%3D","line":187,"updated":"2013-08-15 01:01:44.000000000","message":"remove \"then\" since this seems like a follow-on to the previous paragraph about initialization.","commit_id":"1570c6932f3c3254cbdc5de2b07b49920479fad6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"babc0963e1642c8b7897a98ea6b87e63117ca4c5","unresolved":false,"context_lines":[{"line_number":184,"context_line":"    from within our __init__() fucntion since the assignment driver is not"},{"line_number":185,"context_line":"    itself yet intitalized."},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    Each of the identity calls are then pre-processed here to choose, based on"},{"line_number":188,"context_line":"    domain, which of the drivers should be called. The non-domain-specific"},{"line_number":189,"context_line":"    driver is still in place, and is used if there is no specific driver for"},{"line_number":190,"context_line":"    the domain in question."}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAARH%2F%2F6lY%3D","line":187,"in_reply_to":"AAAARH%2F%2F7sM%3D","updated":"2013-08-15 09:20:39.000000000","message":"Done","commit_id":"1570c6932f3c3254cbdc5de2b07b49920479fad6"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"67a4818985d3bc8ec9a0a862abf80cee27b777de","unresolved":false,"context_lines":[{"line_number":249,"context_line":"    # - select the right driver for this domain"},{"line_number":250,"context_line":"    # - clear/set domain_ids for drivers that do not support domains"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"    @domains_configured"},{"line_number":253,"context_line":"    def authenticate(self, user_id, password, domain_scope\u003dNone):"},{"line_number":254,"context_line":"        domain_id, driver \u003d self._get_domain_id_and_driver(domain_scope)"},{"line_number":255,"context_line":"        ref \u003d driver.authenticate(user_id, password)"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAARH%2F%2F7q0%3D","line":252,"updated":"2013-08-15 01:01:44.000000000","message":"another way to do this that would not require a wrapper for each method, is to wait for assignment_api to be assigned. A property handler for assignment_api could set the property and then configure domains.\n\nAlternatively, could call a method in the identity driver from resolve_future_dependencies (https://github.com/openstack/keystone/blob/master/keystone/common/dependency.py#L80)","commit_id":"1570c6932f3c3254cbdc5de2b07b49920479fad6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"babc0963e1642c8b7897a98ea6b87e63117ca4c5","unresolved":false,"context_lines":[{"line_number":249,"context_line":"    # - select the right driver for this domain"},{"line_number":250,"context_line":"    # - clear/set domain_ids for drivers that do not support domains"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"    @domains_configured"},{"line_number":253,"context_line":"    def authenticate(self, user_id, password, domain_scope\u003dNone):"},{"line_number":254,"context_line":"        domain_id, driver \u003d self._get_domain_id_and_driver(domain_scope)"},{"line_number":255,"context_line":"        ref \u003d driver.authenticate(user_id, password)"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAARH%2F%2F6lU%3D","line":252,"in_reply_to":"AAAARH%2F%2F7q0%3D","updated":"2013-08-15 09:20:39.000000000","message":"Agreed - I might look into that as a future optimisation, if that becomes necessary.","commit_id":"1570c6932f3c3254cbdc5de2b07b49920479fad6"}],"keystone/test.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"323ef5b1d2b24653b8d6ffd9564ba5d99c43e384","unresolved":false,"context_lines":[{"line_number":299,"context_line":"                    rv \u003d self.identity_api.get_domain(domain[\u0027id\u0027])"},{"line_number":300,"context_line":"                except exception.NotImplemented:"},{"line_number":301,"context_line":"                    rv \u003d domain"},{"line_number":302,"context_line":"                    pass"},{"line_number":303,"context_line":"                setattr(self, \u0027domain_%s\u0027 % domain[\u0027id\u0027], rv)"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"            for tenant in fixtures.TENANTS:"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FHjA%3D","line":302,"updated":"2013-08-06 22:42:52.000000000","message":"remove this useless line","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"63e20794984f026022e2d75937bcb3b856535927","unresolved":false,"context_lines":[{"line_number":299,"context_line":"                    rv \u003d self.identity_api.get_domain(domain[\u0027id\u0027])"},{"line_number":300,"context_line":"                except exception.NotImplemented:"},{"line_number":301,"context_line":"                    rv \u003d domain"},{"line_number":302,"context_line":"                    pass"},{"line_number":303,"context_line":"                setattr(self, \u0027domain_%s\u0027 % domain[\u0027id\u0027], rv)"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"            for tenant in fixtures.TENANTS:"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FFPU%3D","line":302,"in_reply_to":"AAAAQn%2F%2FHjA%3D","updated":"2013-08-07 14:24:24.000000000","message":"Done","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"}],"tests/keystone.Default.conf":[{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"342c4da7023334b0a9d66ddb1c26f1d78ecda95f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"[ldap]"},{"line_number":2,"context_line":"url \u003d fake://memory"},{"line_number":3,"context_line":"user \u003d cn\u003dAdmin"},{"line_number":4,"context_line":"password \u003d password"}],"source_content_type":"text/plain","patch_set":11,"id":"AAAAQn%2F%2FMjU%3D","line":1,"updated":"2013-08-05 16:49:39.000000000","message":"This file is strangely named, between the Cap in the D and the fact that it is seeming to compete withe test_overides.  Suggest renaming it and commenting on what it is used for.","commit_id":"89b2db3336097d51f513228e2c60c19e5d8dd172"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"280fc37718656e53a1ab32423a094f52a98e6f68","unresolved":false,"context_lines":[{"line_number":1,"context_line":"[ldap]"},{"line_number":2,"context_line":"url \u003d fake://memory"},{"line_number":3,"context_line":"user \u003d cn\u003dAdmin"},{"line_number":4,"context_line":"password \u003d password"}],"source_content_type":"text/plain","patch_set":11,"id":"AAAAQn%2F%2FMO4%3D","line":1,"in_reply_to":"AAAAQn%2F%2FMjU%3D","updated":"2013-08-05 18:07:08.000000000","message":"Fair comment, since it is called keystone.Default.conf because this is the domains specific configuration file for the default domain, for which the domain_id is \"Default\"","commit_id":"89b2db3336097d51f513228e2c60c19e5d8dd172"}],"tests/test_backend.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"323ef5b1d2b24653b8d6ffd9564ba5d99c43e384","unresolved":false,"context_lines":[{"line_number":1512,"context_line":"                          self.identity_api.update_user,"},{"line_number":1513,"context_line":"                          user_id,"},{"line_number":1514,"context_line":"                          {\u0027id\u0027: user_id,"},{"line_number":1515,"context_line":"                           \u0027domain_id\u0027: DEFAULT_DOMAIN_ID})"},{"line_number":1516,"context_line":""},{"line_number":1517,"context_line":"    def test_delete_user_with_project_association(self):"},{"line_number":1518,"context_line":"        user \u003d {\u0027id\u0027: uuid.uuid4().hex,"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FHiw%3D","line":1515,"updated":"2013-08-06 22:42:52.000000000","message":"why does this test need to change? update_user requires a domain_id now whereas before it didn\u0027t? This seems like an incompatibility.","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"63e20794984f026022e2d75937bcb3b856535927","unresolved":false,"context_lines":[{"line_number":1512,"context_line":"                          self.identity_api.update_user,"},{"line_number":1513,"context_line":"                          user_id,"},{"line_number":1514,"context_line":"                          {\u0027id\u0027: user_id,"},{"line_number":1515,"context_line":"                           \u0027domain_id\u0027: DEFAULT_DOMAIN_ID})"},{"line_number":1516,"context_line":""},{"line_number":1517,"context_line":"    def test_delete_user_with_project_association(self):"},{"line_number":1518,"context_line":"        user \u003d {\u0027id\u0027: uuid.uuid4().hex,"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FFOc%3D","line":1515,"in_reply_to":"AAAAQn%2F%2FHiw%3D","updated":"2013-08-07 14:24:24.000000000","message":"So the controller has always ensured that a domain_id is filled in if the caller has not supplied it.  However, this call goes straight to the driver layer it SHOULD have also had the domain_id in there...but got away with it since it was only testing error handling.  Now, of course, the new code in the manager expects the controller (and hence any test that is bypassing the controller) to include domain_id - hence the need to fix this test.","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"}],"tests/test_backend_ldap.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"323ef5b1d2b24653b8d6ffd9564ba5d99c43e384","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class BaseLDAPIdentity(test_backend.IdentityTests):"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def _get_domain_fixture(self):"},{"line_number":38,"context_line":"        \"\"\"Domains in LDAP are read-only, so just return the static one.\"\"\""},{"line_number":39,"context_line":"        return self.identity_api.get_domain(CONF.identity.default_domain_id)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FHiE%3D","line":36,"updated":"2013-08-06 22:42:52.000000000","message":"suggest undo whitespace changes.","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"63e20794984f026022e2d75937bcb3b856535927","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class BaseLDAPIdentity(test_backend.IdentityTests):"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def _get_domain_fixture(self):"},{"line_number":38,"context_line":"        \"\"\"Domains in LDAP are read-only, so just return the static one.\"\"\""},{"line_number":39,"context_line":"        return self.identity_api.get_domain(CONF.identity.default_domain_id)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FFM8%3D","line":36,"in_reply_to":"AAAAQn%2F%2FHiE%3D","updated":"2013-08-07 14:24:24.000000000","message":"Done","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"323ef5b1d2b24653b8d6ffd9564ba5d99c43e384","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        user \u003d {\u0027id\u0027: \u0027fake1\u0027,"},{"line_number":67,"context_line":"                \u0027name\u0027: \u0027fake1\u0027,"},{"line_number":68,"context_line":"                \u0027password\u0027: \u0027fakepass1\u0027,"},{"line_number":69,"context_line":"                \u0027domain_id\u0027: CONF.identity.default_domain_id,"},{"line_number":70,"context_line":"                \u0027tenants\u0027: [\u0027bar\u0027]}"},{"line_number":71,"context_line":"        self.identity_api.create_user(\u0027fake1\u0027, user)"},{"line_number":72,"context_line":"        user_ref \u003d self.identity_api.get_user(\u0027fake1\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FHhw%3D","line":69,"updated":"2013-08-06 22:42:52.000000000","message":"why does this test need to change?","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"63e20794984f026022e2d75937bcb3b856535927","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        user \u003d {\u0027id\u0027: \u0027fake1\u0027,"},{"line_number":67,"context_line":"                \u0027name\u0027: \u0027fake1\u0027,"},{"line_number":68,"context_line":"                \u0027password\u0027: \u0027fakepass1\u0027,"},{"line_number":69,"context_line":"                \u0027domain_id\u0027: CONF.identity.default_domain_id,"},{"line_number":70,"context_line":"                \u0027tenants\u0027: [\u0027bar\u0027]}"},{"line_number":71,"context_line":"        self.identity_api.create_user(\u0027fake1\u0027, user)"},{"line_number":72,"context_line":"        user_ref \u003d self.identity_api.get_user(\u0027fake1\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FFNg%3D","line":69,"in_reply_to":"AAAAQn%2F%2FHhw%3D","updated":"2013-08-07 14:24:24.000000000","message":"similar to the comment in backend_test.py, this test should have always had domain_id in it, but got away with it, due to the fact that the LDAP backend would remove domain_ids anyway. The controllers (which this test is bypassing) always ensure a domain_id is present (so no change at the API level here) - but any test calling the Manager layer directly needs to do the same.","commit_id":"6782a6483a3bc728a299dfe4ae7466b7695270f6"}]}
