)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"4ab21190d7b75cdc741f982daa66a93f451b46c8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"1aca2d91_c5c83d77","updated":"2015-05-06 22:12:23.000000000","message":"nice commit message, could you add blank lines after the title and between the message and Partial-Bug?","commit_id":"1c6f3df9b6e50121a67a294974ae86d80ef8b024"},{"author":{"_account_id":15640,"name":"Roxana Gherle","email":"roxana.gherle@hpe.com","username":"roxana-gherle"},"change_message_id":"2fb443d246bba2fcf466ace31599e731ac74b3b2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"1aca2d91_09040f15","in_reply_to":"1aca2d91_c5c83d77","updated":"2015-05-06 23:26:34.000000000","message":"Done","commit_id":"1c6f3df9b6e50121a67a294974ae86d80ef8b024"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"4ab21190d7b75cdc741f982daa66a93f451b46c8","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Roxana Gherle \u003croxana.gherle@hp.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-05-06 14:58:40 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Log the correct user-agent in keystone access log"},{"line_number":8,"context_line":"keystone access log should log explicitly which client made the request."},{"line_number":9,"context_line":"For example when nova makes a request to validate a token we should log"},{"line_number":10,"context_line":"\u0027python-novaclient;python-keystoneclient\u0027 for the user-agent."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1aca2d91_a5c5415c","line":7,"updated":"2015-05-06 22:12:23.000000000","message":"blank line here","commit_id":"1c6f3df9b6e50121a67a294974ae86d80ef8b024"},{"author":{"_account_id":15640,"name":"Roxana Gherle","email":"roxana.gherle@hpe.com","username":"roxana-gherle"},"change_message_id":"2fb443d246bba2fcf466ace31599e731ac74b3b2","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Roxana Gherle \u003croxana.gherle@hp.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-05-06 14:58:40 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Log the correct user-agent in keystone access log"},{"line_number":8,"context_line":"keystone access log should log explicitly which client made the request."},{"line_number":9,"context_line":"For example when nova makes a request to validate a token we should log"},{"line_number":10,"context_line":"\u0027python-novaclient;python-keystoneclient\u0027 for the user-agent."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1aca2d91_ac09a92e","line":7,"in_reply_to":"1aca2d91_25037175","updated":"2015-05-06 23:26:34.000000000","message":"Done","commit_id":"1c6f3df9b6e50121a67a294974ae86d80ef8b024"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"0251a91781e71cc7dff641f7fdfa5a7f93a5ac62","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Roxana Gherle \u003croxana.gherle@hp.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-05-06 14:58:40 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Log the correct user-agent in keystone access log"},{"line_number":8,"context_line":"keystone access log should log explicitly which client made the request."},{"line_number":9,"context_line":"For example when nova makes a request to validate a token we should log"},{"line_number":10,"context_line":"\u0027python-novaclient;python-keystoneclient\u0027 for the user-agent."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1aca2d91_25037175","line":7,"in_reply_to":"1aca2d91_a5c5415c","updated":"2015-05-06 22:19:11.000000000","message":"++ and Keystone.\n\nThis doesn\u0027t actually change what is logged. This is more like: \u0027Send the correct user-agent to Keystone\u0027","commit_id":"1c6f3df9b6e50121a67a294974ae86d80ef8b024"},{"author":{"_account_id":15640,"name":"Roxana Gherle","email":"roxana.gherle@hpe.com","username":"roxana-gherle"},"change_message_id":"2fb443d246bba2fcf466ace31599e731ac74b3b2","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Roxana Gherle \u003croxana.gherle@hp.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-05-06 14:58:40 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Log the correct user-agent in keystone access log"},{"line_number":8,"context_line":"keystone access log should log explicitly which client made the request."},{"line_number":9,"context_line":"For example when nova makes a request to validate a token we should log"},{"line_number":10,"context_line":"\u0027python-novaclient;python-keystoneclient\u0027 for the user-agent."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1aca2d91_ecffa1ff","line":7,"in_reply_to":"1aca2d91_a5c5415c","updated":"2015-05-06 23:26:34.000000000","message":"Done","commit_id":"1c6f3df9b6e50121a67a294974ae86d80ef8b024"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"0251a91781e71cc7dff641f7fdfa5a7f93a5ac62","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2015-05-06 14:58:40 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Log the correct user-agent in keystone access log"},{"line_number":8,"context_line":"keystone access log should log explicitly which client made the request."},{"line_number":9,"context_line":"For example when nova makes a request to validate a token we should log"},{"line_number":10,"context_line":"\u0027python-novaclient;python-keystoneclient\u0027 for the user-agent."},{"line_number":11,"context_line":"Partial-Bug: #1450666"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1aca2d91_a5ef81af","line":8,"updated":"2015-05-06 22:19:11.000000000","message":"Keystone","commit_id":"1c6f3df9b6e50121a67a294974ae86d80ef8b024"},{"author":{"_account_id":15640,"name":"Roxana Gherle","email":"roxana.gherle@hpe.com","username":"roxana-gherle"},"change_message_id":"2fb443d246bba2fcf466ace31599e731ac74b3b2","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2015-05-06 14:58:40 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Log the correct user-agent in keystone access log"},{"line_number":8,"context_line":"keystone access log should log explicitly which client made the request."},{"line_number":9,"context_line":"For example when nova makes a request to validate a token we should log"},{"line_number":10,"context_line":"\u0027python-novaclient;python-keystoneclient\u0027 for the user-agent."},{"line_number":11,"context_line":"Partial-Bug: #1450666"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1aca2d91_0cc2dd33","line":8,"in_reply_to":"1aca2d91_a5ef81af","updated":"2015-05-06 23:26:34.000000000","message":"Done","commit_id":"1c6f3df9b6e50121a67a294974ae86d80ef8b024"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"0251a91781e71cc7dff641f7fdfa5a7f93a5ac62","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Log the correct user-agent in keystone access log"},{"line_number":8,"context_line":"keystone access log should log explicitly which client made the request."},{"line_number":9,"context_line":"For example when nova makes a request to validate a token we should log"},{"line_number":10,"context_line":"\u0027python-novaclient;python-keystoneclient\u0027 for the user-agent."},{"line_number":11,"context_line":"Partial-Bug: #1450666"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ic87861d2f9fefb3fe78cc93adc73acad9a837b39"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1aca2d91_45354d44","line":10,"updated":"2015-05-06 22:19:11.000000000","message":"I added a comment to the bug about the standard user-agent format.","commit_id":"1c6f3df9b6e50121a67a294974ae86d80ef8b024"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"4ab21190d7b75cdc741f982daa66a93f451b46c8","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Log the correct user-agent in keystone access log"},{"line_number":8,"context_line":"keystone access log should log explicitly which client made the request."},{"line_number":9,"context_line":"For example when nova makes a request to validate a token we should log"},{"line_number":10,"context_line":"\u0027python-novaclient;python-keystoneclient\u0027 for the user-agent."},{"line_number":11,"context_line":"Partial-Bug: #1450666"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ic87861d2f9fefb3fe78cc93adc73acad9a837b39"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1aca2d91_0596354c","line":10,"updated":"2015-05-06 22:12:23.000000000","message":"blank line here","commit_id":"1c6f3df9b6e50121a67a294974ae86d80ef8b024"},{"author":{"_account_id":15640,"name":"Roxana Gherle","email":"roxana.gherle@hpe.com","username":"roxana-gherle"},"change_message_id":"2fb443d246bba2fcf466ace31599e731ac74b3b2","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Log the correct user-agent in keystone access log"},{"line_number":8,"context_line":"keystone access log should log explicitly which client made the request."},{"line_number":9,"context_line":"For example when nova makes a request to validate a token we should log"},{"line_number":10,"context_line":"\u0027python-novaclient;python-keystoneclient\u0027 for the user-agent."},{"line_number":11,"context_line":"Partial-Bug: #1450666"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ic87861d2f9fefb3fe78cc93adc73acad9a837b39"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1aca2d91_cce2a5d5","line":10,"in_reply_to":"1aca2d91_0596354c","updated":"2015-05-06 23:26:34.000000000","message":"Done","commit_id":"1c6f3df9b6e50121a67a294974ae86d80ef8b024"},{"author":{"_account_id":15640,"name":"Roxana Gherle","email":"roxana.gherle@hpe.com","username":"roxana-gherle"},"change_message_id":"2fb443d246bba2fcf466ace31599e731ac74b3b2","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Log the correct user-agent in keystone access log"},{"line_number":8,"context_line":"keystone access log should log explicitly which client made the request."},{"line_number":9,"context_line":"For example when nova makes a request to validate a token we should log"},{"line_number":10,"context_line":"\u0027python-novaclient;python-keystoneclient\u0027 for the user-agent."},{"line_number":11,"context_line":"Partial-Bug: #1450666"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ic87861d2f9fefb3fe78cc93adc73acad9a837b39"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1aca2d91_ace769e3","line":10,"in_reply_to":"1aca2d91_45354d44","updated":"2015-05-06 23:26:34.000000000","message":"Done","commit_id":"1c6f3df9b6e50121a67a294974ae86d80ef8b024"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"0251a91781e71cc7dff641f7fdfa5a7f93a5ac62","unresolved":false,"context_lines":[{"line_number":8,"context_line":"keystone access log should log explicitly which client made the request."},{"line_number":9,"context_line":"For example when nova makes a request to validate a token we should log"},{"line_number":10,"context_line":"\u0027python-novaclient;python-keystoneclient\u0027 for the user-agent."},{"line_number":11,"context_line":"Partial-Bug: #1450666"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ic87861d2f9fefb3fe78cc93adc73acad9a837b39"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1aca2d91_651729a4","line":11,"updated":"2015-05-06 22:19:11.000000000","message":"Is there more that needs to be fixed with for this bug?","commit_id":"1c6f3df9b6e50121a67a294974ae86d80ef8b024"},{"author":{"_account_id":15640,"name":"Roxana Gherle","email":"roxana.gherle@hpe.com","username":"roxana-gherle"},"change_message_id":"2fb443d246bba2fcf466ace31599e731ac74b3b2","unresolved":false,"context_lines":[{"line_number":8,"context_line":"keystone access log should log explicitly which client made the request."},{"line_number":9,"context_line":"For example when nova makes a request to validate a token we should log"},{"line_number":10,"context_line":"\u0027python-novaclient;python-keystoneclient\u0027 for the user-agent."},{"line_number":11,"context_line":"Partial-Bug: #1450666"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ic87861d2f9fefb3fe78cc93adc73acad9a837b39"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1aca2d91_8cecadc8","line":11,"in_reply_to":"1aca2d91_651729a4","updated":"2015-05-06 23:26:34.000000000","message":"Changed it to Closes-Bug","commit_id":"1c6f3df9b6e50121a67a294974ae86d80ef8b024"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"7b13374e383298bc2a4f835b13e65082e16d7816","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Keystone access log should log explicitly which user-agent made the request."},{"line_number":10,"context_line":"For example when nova makes a request to validate a token we should log"},{"line_number":11,"context_line":"\u0027nova\u0027 for the user-agent. For the services that don\u0027t use oslo_config.cfg"},{"line_number":12,"context_line":"(e.g Swift) we will register a default \u0027keystonemiddleware\u0027 CONF.project"},{"line_number":13,"context_line":"config which will be used as the user-agent name"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"7a016987_e4b7161f","line":11,"updated":"2015-05-30 13:55:56.000000000","message":"the current code doesn\u0027t use \u0027nova\u0027, it uses \u0027keystonemiddleware.auth_token (nova)\u0027","commit_id":"edd389013a41786f8cdbffc24bbfa96090216e65"},{"author":{"_account_id":15640,"name":"Roxana Gherle","email":"roxana.gherle@hpe.com","username":"roxana-gherle"},"change_message_id":"175acdafcc18aa7e676b0ac9025cfda604997074","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Keystone access log should log explicitly which user-agent made the request."},{"line_number":10,"context_line":"For example when nova makes a request to validate a token we should log"},{"line_number":11,"context_line":"\u0027nova\u0027 for the user-agent. For the services that don\u0027t use oslo_config.cfg"},{"line_number":12,"context_line":"(e.g Swift) we will register a default \u0027keystonemiddleware\u0027 CONF.project"},{"line_number":13,"context_line":"config which will be used as the user-agent name"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"5afe65bd_d91dacbe","line":11,"in_reply_to":"7a016987_e4b7161f","updated":"2015-06-02 19:44:27.000000000","message":"Yeah, sorry about that. I\u0027ll change the commit message to be in sync with the code.","commit_id":"edd389013a41786f8cdbffc24bbfa96090216e65"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"7b13374e383298bc2a4f835b13e65082e16d7816","unresolved":false,"context_lines":[{"line_number":10,"context_line":"For example when nova makes a request to validate a token we should log"},{"line_number":11,"context_line":"\u0027nova\u0027 for the user-agent. For the services that don\u0027t use oslo_config.cfg"},{"line_number":12,"context_line":"(e.g Swift) we will register a default \u0027keystonemiddleware\u0027 CONF.project"},{"line_number":13,"context_line":"config which will be used as the user-agent name"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Closes-Bug: #1450666"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"7a016987_04bd9201","line":13,"updated":"2015-05-30 13:55:56.000000000","message":"(nit) add a period at the end of the sentence.","commit_id":"edd389013a41786f8cdbffc24bbfa96090216e65"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"635daa3b4cd152b3d3377eb992525d9f1f9ee976","unresolved":false,"context_lines":[{"line_number":10,"context_line":"For example when nova makes a request to validate a token we should log"},{"line_number":11,"context_line":"\u0027nova\u0027 for the user-agent. For the services that don\u0027t use oslo_config.cfg"},{"line_number":12,"context_line":"(e.g Swift) we will register a default \u0027keystonemiddleware\u0027 CONF.project"},{"line_number":13,"context_line":"config which will be used as the user-agent name"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Closes-Bug: #1450666"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"7a016987_c6347efc","line":13,"updated":"2015-05-28 02:00:53.000000000","message":"I think the commit message could be clearer saying the user-agent will be set to i) \u0027keystonemiddleware.auth_token (nova)\u0027 when the project name is available; otherwise it will be ii) \u0027keystonemiddleware.auth_token (unkown)\u0027 for services that don\u0027t use oslo_config.cfg\n\nHowever this should not be blocking this patch at all.","commit_id":"edd389013a41786f8cdbffc24bbfa96090216e65"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1b854d4a9919c78b40f7bd30240bc6470aeb9304","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Send the correct user-agent to Keystone"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Keystone access log should explicitly log which user-agent made the request"},{"line_number":10,"context_line":"using the following string format:"},{"line_number":11,"context_line":"\"{project}/{project_version} keystonemiddleware.auth_token/"},{"line_number":12,"context_line":"{keystonemiddleware_version}\"."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"3afb71cf_fdae647f","line":9,"updated":"2015-06-11 02:34:19.000000000","message":"Change Keystone to \"identity server\". The deployment might not be using keystone.\n\nchange \"should explicitly log\" since \"should be able to log\" -- the client can\u0027t force the server to log anything.","commit_id":"fb4b312f6ccc2a0defbcc896ecc62b94b3c0d5ab"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"70bc8238c13be64bf65fe11da4d76da394997d47","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Send the correct user-agent to Keystone"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Keystone access log should explicitly log which user-agent made the request"},{"line_number":10,"context_line":"using the following string format:"},{"line_number":11,"context_line":"\"{project}/{project_version} keystonemiddleware.auth_token/"},{"line_number":12,"context_line":"{keystonemiddleware_version}\"."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"fa32b979_29147c42","line":9,"in_reply_to":"3afb71cf_fdae647f","updated":"2015-06-15 16:19:35.000000000","message":"Done","commit_id":"fb4b312f6ccc2a0defbcc896ecc62b94b3c0d5ab"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1b854d4a9919c78b40f7bd30240bc6470aeb9304","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Send the correct user-agent to Keystone"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Keystone access log should explicitly log which user-agent made the request"},{"line_number":10,"context_line":"using the following string format:"},{"line_number":11,"context_line":"\"{project}/{project_version} keystonemiddleware.auth_token/"},{"line_number":12,"context_line":"{keystonemiddleware_version}\"."},{"line_number":13,"context_line":"The {project} value will be retrieved from the oslo_config configuration"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"3afb71cf_3d92bc4c","line":10,"updated":"2015-06-11 02:34:19.000000000","message":"if this is coming from some internet standard then should reference it so we know why this format was chosen.","commit_id":"fb4b312f6ccc2a0defbcc896ecc62b94b3c0d5ab"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"70bc8238c13be64bf65fe11da4d76da394997d47","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Send the correct user-agent to Keystone"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Keystone access log should explicitly log which user-agent made the request"},{"line_number":10,"context_line":"using the following string format:"},{"line_number":11,"context_line":"\"{project}/{project_version} keystonemiddleware.auth_token/"},{"line_number":12,"context_line":"{keystonemiddleware_version}\"."},{"line_number":13,"context_line":"The {project} value will be retrieved from the oslo_config configuration"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"fa32b979_e91d3467","line":10,"in_reply_to":"3afb71cf_3d92bc4c","updated":"2015-06-15 16:19:35.000000000","message":"Done","commit_id":"fb4b312f6ccc2a0defbcc896ecc62b94b3c0d5ab"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1b854d4a9919c78b40f7bd30240bc6470aeb9304","unresolved":false,"context_lines":[{"line_number":12,"context_line":"{keystonemiddleware_version}\"."},{"line_number":13,"context_line":"The {project} value will be retrieved from the oslo_config configuration"},{"line_number":14,"context_line":"option/attribute named \u0027project\u0027 or from a \u0027project\u0027 paste.deploy"},{"line_number":15,"context_line":"option for services that don\u0027t use oslo_config (e.g. Swift)."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Closes-Bug: #1450666"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"3afb71cf_9d23f0bc","line":15,"updated":"2015-06-11 02:34:19.000000000","message":"this isn\u0027t totally accurate since the project also might not be available.","commit_id":"fb4b312f6ccc2a0defbcc896ecc62b94b3c0d5ab"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"70bc8238c13be64bf65fe11da4d76da394997d47","unresolved":false,"context_lines":[{"line_number":12,"context_line":"{keystonemiddleware_version}\"."},{"line_number":13,"context_line":"The {project} value will be retrieved from the oslo_config configuration"},{"line_number":14,"context_line":"option/attribute named \u0027project\u0027 or from a \u0027project\u0027 paste.deploy"},{"line_number":15,"context_line":"option for services that don\u0027t use oslo_config (e.g. Swift)."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Closes-Bug: #1450666"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"fa32b979_c9a070f7","line":15,"in_reply_to":"3afb71cf_9d23f0bc","updated":"2015-06-15 16:19:35.000000000","message":"Done","commit_id":"fb4b312f6ccc2a0defbcc896ecc62b94b3c0d5ab"}],"keystonemiddleware/auth_token/__init__.py":[{"author":{"_account_id":9276,"name":"David Charles Kennedy","email":"david.c.kennedy@hpe.com","username":"darfed"},"change_message_id":"c8a46ac32a1212077dec38e0b066d1d7bf34fbb8","unresolved":false,"context_lines":[{"line_number":1067,"context_line":"            cacert\u003dself._conf_get(\u0027cafile\u0027),"},{"line_number":1068,"context_line":"            insecure\u003dself._conf_get(\u0027insecure\u0027),"},{"line_number":1069,"context_line":"            timeout\u003dself._conf_get(\u0027http_connect_timeout\u0027),"},{"line_number":1070,"context_line":"            user_agent\u003d\u0027python-%sclient %s\u0027 % (CONF.project, USER_AGENT)"},{"line_number":1071,"context_line":"        ))"},{"line_number":1072,"context_line":""},{"line_number":1073,"context_line":"        auth_plugin \u003d self._get_auth_plugin()"}],"source_content_type":"text/x-python","patch_set":4,"id":"9af37de9_34529f14","line":1070,"updated":"2015-05-11 15:14:26.000000000","message":"Is this right?  Is \u0027project\u0027 in CONF rather than something that needs to be added to the list of conf properties above?  If this is not something you\u0027ve added then I suppose we\u0027re stuck with it but it collides rather with \u0027project\u0027 and \u0027project_id\u0027.  Bit confusing.","commit_id":"34ec62ad2f9b1cef2f60418933126adcc571ca2a"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"6b89be2fe81342e0c767125508e79db47d055149","unresolved":false,"context_lines":[{"line_number":364,"context_line":"CONF.register_opt(cfg.StrOpt(\u0027project\u0027,"},{"line_number":365,"context_line":"                             default\u003d\u0027keystonemiddleware\u0027,"},{"line_number":366,"context_line":"                             help\u003d\u0027(Optional) Name of the user agent\u0027"},{"line_number":367,"context_line":"                                  \u0027 to enhance traceability.\u0027))"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"_LOG \u003d logging.getLogger(__name__)"},{"line_number":370,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_6de4e60c","line":367,"updated":"2015-05-14 05:55:12.000000000","message":"why there? why wouldn\u0027t we put it in with the other keystonemiddleware options? This has much more potential to clash with options from other projects.","commit_id":"ab4100d391c71613f9566ff4dffc4c7508e3587d"},{"author":{"_account_id":15640,"name":"Roxana Gherle","email":"roxana.gherle@hpe.com","username":"roxana-gherle"},"change_message_id":"eb9a52d4ebd1bdcc9282fc429aae397f59e628a9","unresolved":false,"context_lines":[{"line_number":364,"context_line":"CONF.register_opt(cfg.StrOpt(\u0027project\u0027,"},{"line_number":365,"context_line":"                             default\u003d\u0027keystonemiddleware\u0027,"},{"line_number":366,"context_line":"                             help\u003d\u0027(Optional) Name of the user agent\u0027"},{"line_number":367,"context_line":"                                  \u0027 to enhance traceability.\u0027))"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"_LOG \u003d logging.getLogger(__name__)"},{"line_number":370,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_3ba16195","line":367,"in_reply_to":"7a016987_6de4e60c","updated":"2015-05-15 01:03:55.000000000","message":"I removed it completely because project is not actually an option like the others in the list, but is an attribute of the cfg.CONF, so I decided to call CONF.project directly in _create_identity_server - with the additional code to catch the NoSuchOptError exception for the Swift case which doesn\u0027t use oslo_config.cfg.py","commit_id":"ab4100d391c71613f9566ff4dffc4c7508e3587d"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"6b89be2fe81342e0c767125508e79db47d055149","unresolved":false,"context_lines":[{"line_number":1069,"context_line":"            cacert\u003dself._conf_get(\u0027cafile\u0027),"},{"line_number":1070,"context_line":"            insecure\u003dself._conf_get(\u0027insecure\u0027),"},{"line_number":1071,"context_line":"            timeout\u003dself._conf_get(\u0027http_connect_timeout\u0027),"},{"line_number":1072,"context_line":"            user_agent\u003dCONF.project,"},{"line_number":1073,"context_line":"        ))"},{"line_number":1074,"context_line":""},{"line_number":1075,"context_line":"        auth_plugin \u003d self._get_auth_plugin()"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_8dce0282","line":1072,"updated":"2015-05-14 05:55:12.000000000","message":"why wouldn\u0027t we use _conf_get like the other options?","commit_id":"ab4100d391c71613f9566ff4dffc4c7508e3587d"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"429b6f423e88b0301cbc24712db291162183a250","unresolved":false,"context_lines":[{"line_number":1101,"context_line":"            # CONF.project will not exist for Swift service"},{"line_number":1102,"context_line":"            user_agent \u003d CONF.project"},{"line_number":1103,"context_line":"        except cfg.NoSuchOptError:"},{"line_number":1104,"context_line":"            user_agent \u003d None"},{"line_number":1105,"context_line":"        sess \u003d session.Session.construct(dict("},{"line_number":1106,"context_line":"            cert\u003dself._conf_get(\u0027certfile\u0027),"},{"line_number":1107,"context_line":"            key\u003dself._conf_get(\u0027keyfile\u0027),"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a016987_d20560c2","line":1104,"updated":"2015-05-27 22:44:42.000000000","message":"ok, i didn\u0027t know about CONF.project like that. I think here the user-agent should mention this is still coming from auth_token middleware, so like:\n\nproject \u003d CONF.get(\u0027project\u0027, \u0027unknown\u0027)\nuser_agent \u003d \u0027keystonemiddleware.auth_token (%s)\u0027 % project\n\n?","commit_id":"c2c0fae6a31271ba5728a327fc32816d540d77c3"},{"author":{"_account_id":15640,"name":"Roxana Gherle","email":"roxana.gherle@hpe.com","username":"roxana-gherle"},"change_message_id":"9ab81c72437aec2bdd17d6325ed4536611f291dd","unresolved":false,"context_lines":[{"line_number":1101,"context_line":"            # CONF.project will not exist for Swift service"},{"line_number":1102,"context_line":"            user_agent \u003d CONF.project"},{"line_number":1103,"context_line":"        except cfg.NoSuchOptError:"},{"line_number":1104,"context_line":"            user_agent \u003d None"},{"line_number":1105,"context_line":"        sess \u003d session.Session.construct(dict("},{"line_number":1106,"context_line":"            cert\u003dself._conf_get(\u0027certfile\u0027),"},{"line_number":1107,"context_line":"            key\u003dself._conf_get(\u0027keyfile\u0027),"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a016987_9b5823fc","line":1104,"in_reply_to":"7a016987_5296104d","updated":"2015-05-28 00:33:31.000000000","message":"Done","commit_id":"c2c0fae6a31271ba5728a327fc32816d540d77c3"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"c1a535f88b20a4c16084e7b7db03506fcafe304c","unresolved":false,"context_lines":[{"line_number":1101,"context_line":"            # CONF.project will not exist for Swift service"},{"line_number":1102,"context_line":"            user_agent \u003d CONF.project"},{"line_number":1103,"context_line":"        except cfg.NoSuchOptError:"},{"line_number":1104,"context_line":"            user_agent \u003d None"},{"line_number":1105,"context_line":"        sess \u003d session.Session.construct(dict("},{"line_number":1106,"context_line":"            cert\u003dself._conf_get(\u0027certfile\u0027),"},{"line_number":1107,"context_line":"            key\u003dself._conf_get(\u0027keyfile\u0027),"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a016987_5296104d","line":1104,"in_reply_to":"7a016987_d20560c2","updated":"2015-05-27 22:48:47.000000000","message":"++ I would like to see the user_agent still explicitly say keystonemiddleware. Otherwise, this change looks pretty good to me.","commit_id":"c2c0fae6a31271ba5728a327fc32816d540d77c3"},{"author":{"_account_id":15640,"name":"Roxana Gherle","email":"roxana.gherle@hpe.com","username":"roxana-gherle"},"change_message_id":"9ab81c72437aec2bdd17d6325ed4536611f291dd","unresolved":false,"context_lines":[{"line_number":1101,"context_line":"            # CONF.project will not exist for Swift service"},{"line_number":1102,"context_line":"            user_agent \u003d CONF.project"},{"line_number":1103,"context_line":"        except cfg.NoSuchOptError:"},{"line_number":1104,"context_line":"            user_agent \u003d None"},{"line_number":1105,"context_line":"        sess \u003d session.Session.construct(dict("},{"line_number":1106,"context_line":"            cert\u003dself._conf_get(\u0027certfile\u0027),"},{"line_number":1107,"context_line":"            key\u003dself._conf_get(\u0027keyfile\u0027),"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a016987_bb619faa","line":1104,"in_reply_to":"7a016987_d20560c2","updated":"2015-05-28 00:33:31.000000000","message":"Sounds good! I can\u0027t use CONF.get though as I am getting a cfg.NoSuchOptError exception. So I will use getattr(CONF, \u0027project\u0027, \u0027unknown\u0027)","commit_id":"c2c0fae6a31271ba5728a327fc32816d540d77c3"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"7b13374e383298bc2a4f835b13e65082e16d7816","unresolved":false,"context_lines":[{"line_number":1098,"context_line":"        # however we can\u0027t do that because we have to use _conf_get to"},{"line_number":1099,"context_line":"        # support the paste.ini options."},{"line_number":1100,"context_line":""},{"line_number":1101,"context_line":"        # CONF.project may not exist for Swift service"},{"line_number":1102,"context_line":"        project \u003d getattr(CONF, \u0027project\u0027, \u0027unknown\u0027)"},{"line_number":1103,"context_line":"        sess \u003d session.Session.construct(dict("},{"line_number":1104,"context_line":"            cert\u003dself._conf_get(\u0027certfile\u0027),"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a016987_c439baa5","line":1101,"updated":"2015-05-30 13:55:56.000000000","message":"I don\u0027t see how it\u0027s possible that a service can have an oslo.config CONF and not have project defined. Looks like the only way this could happen is if it didn\u0027t call CONF(), which would mean that the service isn\u0027t configured yet, or we\u0027re using the wrong CONF in which case nothing will work.\n\n[1] http://git.openstack.org/cgit/openstack/oslo.config/tree/oslo_config/cfg.py#n1810\n\nAlso, we shouldn\u0027t refer to swift specifically since there may be other services that don\u0027t have a CONF.project.\n\n # Some projects don\u0027t define CONF.project (e.g., swift)","commit_id":"edd389013a41786f8cdbffc24bbfa96090216e65"},{"author":{"_account_id":15640,"name":"Roxana Gherle","email":"roxana.gherle@hpe.com","username":"roxana-gherle"},"change_message_id":"175acdafcc18aa7e676b0ac9025cfda604997074","unresolved":false,"context_lines":[{"line_number":1098,"context_line":"        # however we can\u0027t do that because we have to use _conf_get to"},{"line_number":1099,"context_line":"        # support the paste.ini options."},{"line_number":1100,"context_line":""},{"line_number":1101,"context_line":"        # CONF.project may not exist for Swift service"},{"line_number":1102,"context_line":"        project \u003d getattr(CONF, \u0027project\u0027, \u0027unknown\u0027)"},{"line_number":1103,"context_line":"        sess \u003d session.Session.construct(dict("},{"line_number":1104,"context_line":"            cert\u003dself._conf_get(\u0027certfile\u0027),"}],"source_content_type":"text/x-python","patch_set":10,"id":"5afe65bd_19f7c4d4","line":1101,"in_reply_to":"7a016987_5298ec77","updated":"2015-06-02 19:44:27.000000000","message":"Sounds good. I\u0027ll have to look into Swift code to see what mechanism they are using for config options. Do you know other projects than Swift which are not using oslo_config?","commit_id":"edd389013a41786f8cdbffc24bbfa96090216e65"},{"author":{"_account_id":15640,"name":"Roxana Gherle","email":"roxana.gherle@hpe.com","username":"roxana-gherle"},"change_message_id":"175acdafcc18aa7e676b0ac9025cfda604997074","unresolved":false,"context_lines":[{"line_number":1098,"context_line":"        # however we can\u0027t do that because we have to use _conf_get to"},{"line_number":1099,"context_line":"        # support the paste.ini options."},{"line_number":1100,"context_line":""},{"line_number":1101,"context_line":"        # CONF.project may not exist for Swift service"},{"line_number":1102,"context_line":"        project \u003d getattr(CONF, \u0027project\u0027, \u0027unknown\u0027)"},{"line_number":1103,"context_line":"        sess \u003d session.Session.construct(dict("},{"line_number":1104,"context_line":"            cert\u003dself._conf_get(\u0027certfile\u0027),"}],"source_content_type":"text/x-python","patch_set":10,"id":"5afe65bd_394cc041","line":1101,"in_reply_to":"7a016987_c439baa5","updated":"2015-06-02 19:44:27.000000000","message":"Good observation! I\u0027ll change the comment not to be so specific about Swift","commit_id":"edd389013a41786f8cdbffc24bbfa96090216e65"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"c2cecc0d5b90c17ebcc9e363f849b22993e4fad8","unresolved":false,"context_lines":[{"line_number":1098,"context_line":"        # however we can\u0027t do that because we have to use _conf_get to"},{"line_number":1099,"context_line":"        # support the paste.ini options."},{"line_number":1100,"context_line":""},{"line_number":1101,"context_line":"        # CONF.project may not exist for Swift service"},{"line_number":1102,"context_line":"        project \u003d getattr(CONF, \u0027project\u0027, \u0027unknown\u0027)"},{"line_number":1103,"context_line":"        sess \u003d session.Session.construct(dict("},{"line_number":1104,"context_line":"            cert\u003dself._conf_get(\u0027certfile\u0027),"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a016987_5298ec77","line":1101,"in_reply_to":"7a016987_c439baa5","updated":"2015-05-30 19:23:30.000000000","message":"Swift, and other projects that do not rely on oslo.conf, should have a way of passing in the project name if at all possible. This can be done in the same way swift passes in the configuration values for Keystone Middleware.\n\nAlways looking up from the CONF object and not allowing swift (or other projects) to participate in clear agent passing is only a partial fix.\n\nI\u0027d be ok with this change being marked as a partial fix and then a follow up patch allowing swift and other non-oslo.config based projects to pass in the value directly.","commit_id":"edd389013a41786f8cdbffc24bbfa96090216e65"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"7b13374e383298bc2a4f835b13e65082e16d7816","unresolved":false,"context_lines":[{"line_number":1099,"context_line":"        # support the paste.ini options."},{"line_number":1100,"context_line":""},{"line_number":1101,"context_line":"        # CONF.project may not exist for Swift service"},{"line_number":1102,"context_line":"        project \u003d getattr(CONF, \u0027project\u0027, \u0027unknown\u0027)"},{"line_number":1103,"context_line":"        sess \u003d session.Session.construct(dict("},{"line_number":1104,"context_line":"            cert\u003dself._conf_get(\u0027certfile\u0027),"},{"line_number":1105,"context_line":"            key\u003dself._conf_get(\u0027keyfile\u0027),"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a016987_64420611","line":1102,"updated":"2015-05-30 13:55:56.000000000","message":"this should be using self._conf_get since that handles getting config from paste.ini or CONF.","commit_id":"edd389013a41786f8cdbffc24bbfa96090216e65"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d170e1bc160666ffecf0c98ea50c8f1506bb40bc","unresolved":false,"context_lines":[{"line_number":1099,"context_line":"        # support the paste.ini options."},{"line_number":1100,"context_line":""},{"line_number":1101,"context_line":"        # CONF.project may not exist for Swift service"},{"line_number":1102,"context_line":"        project \u003d getattr(CONF, \u0027project\u0027, \u0027unknown\u0027)"},{"line_number":1103,"context_line":"        sess \u003d session.Session.construct(dict("},{"line_number":1104,"context_line":"            cert\u003dself._conf_get(\u0027certfile\u0027),"},{"line_number":1105,"context_line":"            key\u003dself._conf_get(\u0027keyfile\u0027),"}],"source_content_type":"text/x-python","patch_set":10,"id":"3afb71cf_751b521c","line":1102,"in_reply_to":"5afe65bd_f99f485d","updated":"2015-06-07 15:07:21.000000000","message":"Fix _conf_get so that it works the way we need it to. The behavior of _conf_get isn\u0027t fixed in stone.","commit_id":"edd389013a41786f8cdbffc24bbfa96090216e65"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"6d6aff9f3c4646b82b4a1f11311a77a44ce7f9a6","unresolved":false,"context_lines":[{"line_number":1099,"context_line":"        # support the paste.ini options."},{"line_number":1100,"context_line":""},{"line_number":1101,"context_line":"        # CONF.project may not exist for Swift service"},{"line_number":1102,"context_line":"        project \u003d getattr(CONF, \u0027project\u0027, \u0027unknown\u0027)"},{"line_number":1103,"context_line":"        sess \u003d session.Session.construct(dict("},{"line_number":1104,"context_line":"            cert\u003dself._conf_get(\u0027certfile\u0027),"},{"line_number":1105,"context_line":"            key\u003dself._conf_get(\u0027keyfile\u0027),"}],"source_content_type":"text/x-python","patch_set":10,"id":"5afe65bd_f044f674","line":1102,"in_reply_to":"5afe65bd_f99f485d","updated":"2015-06-02 22:38:55.000000000","message":"You might need to go with:\n\n    try:\n        self._conf_get(...)\n    except cfg.NoSuchOptError:\n        project \u003d \u0027unknown\u0027","commit_id":"edd389013a41786f8cdbffc24bbfa96090216e65"},{"author":{"_account_id":15640,"name":"Roxana Gherle","email":"roxana.gherle@hpe.com","username":"roxana-gherle"},"change_message_id":"175acdafcc18aa7e676b0ac9025cfda604997074","unresolved":false,"context_lines":[{"line_number":1099,"context_line":"        # support the paste.ini options."},{"line_number":1100,"context_line":""},{"line_number":1101,"context_line":"        # CONF.project may not exist for Swift service"},{"line_number":1102,"context_line":"        project \u003d getattr(CONF, \u0027project\u0027, \u0027unknown\u0027)"},{"line_number":1103,"context_line":"        sess \u003d session.Session.construct(dict("},{"line_number":1104,"context_line":"            cert\u003dself._conf_get(\u0027certfile\u0027),"},{"line_number":1105,"context_line":"            key\u003dself._conf_get(\u0027keyfile\u0027),"}],"source_content_type":"text/x-python","patch_set":10,"id":"5afe65bd_f99f485d","line":1102,"in_reply_to":"7a016987_64420611","updated":"2015-06-02 19:44:27.000000000","message":"I tried using _conf_get but \u0027project\u0027 is not a registered config option, but a regular attribute of CONF object, so it didn\u0027t work..","commit_id":"edd389013a41786f8cdbffc24bbfa96090216e65"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"d3a96ae63c741f281e0af2a14d8c6753337a4b1e","unresolved":false,"context_lines":[{"line_number":1106,"context_line":"            cacert\u003dself._conf_get(\u0027cafile\u0027),"},{"line_number":1107,"context_line":"            insecure\u003dself._conf_get(\u0027insecure\u0027),"},{"line_number":1108,"context_line":"            timeout\u003dself._conf_get(\u0027http_connect_timeout\u0027),"},{"line_number":1109,"context_line":"            user_agent\u003d\u0027keystonemiddleware.auth_token (%s)\u0027 % project,"},{"line_number":1110,"context_line":"        ))"},{"line_number":1111,"context_line":""},{"line_number":1112,"context_line":"        auth_plugin \u003d self._get_auth_plugin()"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a016987_c1be4c64","line":1109,"updated":"2015-05-30 12:44:39.000000000","message":"Is there any reason we are not using standard formatting for this header? Something like:\n  \"{project} ksv.auth_token/{ksm_version}\" or even better \"{project}/{project_version} ksv.auth_token/{ksm_version}\"\n\n\nSee http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.43 for details","commit_id":"edd389013a41786f8cdbffc24bbfa96090216e65"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"6d6aff9f3c4646b82b4a1f11311a77a44ce7f9a6","unresolved":false,"context_lines":[{"line_number":1106,"context_line":"            cacert\u003dself._conf_get(\u0027cafile\u0027),"},{"line_number":1107,"context_line":"            insecure\u003dself._conf_get(\u0027insecure\u0027),"},{"line_number":1108,"context_line":"            timeout\u003dself._conf_get(\u0027http_connect_timeout\u0027),"},{"line_number":1109,"context_line":"            user_agent\u003d\u0027keystonemiddleware.auth_token (%s)\u0027 % project,"},{"line_number":1110,"context_line":"        ))"},{"line_number":1111,"context_line":""},{"line_number":1112,"context_line":"        auth_plugin \u003d self._get_auth_plugin()"}],"source_content_type":"text/x-python","patch_set":10,"id":"5afe65bd_905a624f","line":1109,"in_reply_to":"5afe65bd_b904307e","updated":"2015-06-02 22:38:55.000000000","message":"ksv is meant to be \"ksm\" \n\nKSM \u003d keystonemiddleware (KeyStoneMiddleware, caps for emphasis)\n\nWe should stop abbreviating it.","commit_id":"edd389013a41786f8cdbffc24bbfa96090216e65"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"c2cecc0d5b90c17ebcc9e363f849b22993e4fad8","unresolved":false,"context_lines":[{"line_number":1106,"context_line":"            cacert\u003dself._conf_get(\u0027cafile\u0027),"},{"line_number":1107,"context_line":"            insecure\u003dself._conf_get(\u0027insecure\u0027),"},{"line_number":1108,"context_line":"            timeout\u003dself._conf_get(\u0027http_connect_timeout\u0027),"},{"line_number":1109,"context_line":"            user_agent\u003d\u0027keystonemiddleware.auth_token (%s)\u0027 % project,"},{"line_number":1110,"context_line":"        ))"},{"line_number":1111,"context_line":""},{"line_number":1112,"context_line":"        auth_plugin \u003d self._get_auth_plugin()"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a016987_3293305d","line":1109,"in_reply_to":"7a016987_c1be4c64","updated":"2015-05-30 19:23:30.000000000","message":"++ Please use the standard formatting of a user-agent.","commit_id":"edd389013a41786f8cdbffc24bbfa96090216e65"},{"author":{"_account_id":15640,"name":"Roxana Gherle","email":"roxana.gherle@hpe.com","username":"roxana-gherle"},"change_message_id":"175acdafcc18aa7e676b0ac9025cfda604997074","unresolved":false,"context_lines":[{"line_number":1106,"context_line":"            cacert\u003dself._conf_get(\u0027cafile\u0027),"},{"line_number":1107,"context_line":"            insecure\u003dself._conf_get(\u0027insecure\u0027),"},{"line_number":1108,"context_line":"            timeout\u003dself._conf_get(\u0027http_connect_timeout\u0027),"},{"line_number":1109,"context_line":"            user_agent\u003d\u0027keystonemiddleware.auth_token (%s)\u0027 % project,"},{"line_number":1110,"context_line":"        ))"},{"line_number":1111,"context_line":""},{"line_number":1112,"context_line":"        auth_plugin \u003d self._get_auth_plugin()"}],"source_content_type":"text/x-python","patch_set":10,"id":"5afe65bd_b904307e","line":1109,"in_reply_to":"7a016987_c1be4c64","updated":"2015-06-02 19:44:27.000000000","message":"I\u0027ll change to that format. What\u0027s ksv and ksm..?","commit_id":"edd389013a41786f8cdbffc24bbfa96090216e65"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1b854d4a9919c78b40f7bd30240bc6470aeb9304","unresolved":false,"context_lines":[{"line_number":1102,"context_line":"            project \u003d self._conf_get(\u0027project\u0027)"},{"line_number":1103,"context_line":"        except cfg.NoSuchOptError:"},{"line_number":1104,"context_line":"            try:"},{"line_number":1105,"context_line":"                # CONF.project may not exist for all services as not"},{"line_number":1106,"context_line":"                # everthing is using oslo_config"},{"line_number":1107,"context_line":"                project \u003d CONF.project"},{"line_number":1108,"context_line":"            except cfg.NoSuchOptError:"}],"source_content_type":"text/x-python","patch_set":12,"id":"3afb71cf_9d8770b4","line":1105,"updated":"2015-06-11 02:34:19.000000000","message":"What\u0027s special about the \u0027project\u0027 option that it\u0027s being handled differently than the other config options? If CONF.project may not exist for some services then can\u0027t every other config option not exist for some services?","commit_id":"fb4b312f6ccc2a0defbcc896ecc62b94b3c0d5ab"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"70bc8238c13be64bf65fe11da4d76da394997d47","unresolved":false,"context_lines":[{"line_number":1102,"context_line":"            project \u003d self._conf_get(\u0027project\u0027)"},{"line_number":1103,"context_line":"        except cfg.NoSuchOptError:"},{"line_number":1104,"context_line":"            try:"},{"line_number":1105,"context_line":"                # CONF.project may not exist for all services as not"},{"line_number":1106,"context_line":"                # everthing is using oslo_config"},{"line_number":1107,"context_line":"                project \u003d CONF.project"},{"line_number":1108,"context_line":"            except cfg.NoSuchOptError:"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa32b979_094c18c6","line":1105,"in_reply_to":"3afb71cf_9d8770b4","updated":"2015-06-15 16:19:35.000000000","message":"CONF.project is not an option, but oslo_config treats it like one in the way that it overrides __getattr__ and doesn\u0027t initialize self.project.","commit_id":"fb4b312f6ccc2a0defbcc896ecc62b94b3c0d5ab"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1b854d4a9919c78b40f7bd30240bc6470aeb9304","unresolved":false,"context_lines":[{"line_number":1105,"context_line":"                # CONF.project may not exist for all services as not"},{"line_number":1106,"context_line":"                # everthing is using oslo_config"},{"line_number":1107,"context_line":"                project \u003d CONF.project"},{"line_number":1108,"context_line":"            except cfg.NoSuchOptError:"},{"line_number":1109,"context_line":"                project \u003d None"},{"line_number":1110,"context_line":""},{"line_number":1111,"context_line":"        if not project:"}],"source_content_type":"text/x-python","patch_set":12,"id":"3afb71cf_9dae502c","line":1108,"updated":"2015-06-11 02:34:19.000000000","message":"I don\u0027t get it. Add a comment why we got NoSuchOptError once and then get it again.","commit_id":"fb4b312f6ccc2a0defbcc896ecc62b94b3c0d5ab"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"70bc8238c13be64bf65fe11da4d76da394997d47","unresolved":false,"context_lines":[{"line_number":1105,"context_line":"                # CONF.project may not exist for all services as not"},{"line_number":1106,"context_line":"                # everthing is using oslo_config"},{"line_number":1107,"context_line":"                project \u003d CONF.project"},{"line_number":1108,"context_line":"            except cfg.NoSuchOptError:"},{"line_number":1109,"context_line":"                project \u003d None"},{"line_number":1110,"context_line":""},{"line_number":1111,"context_line":"        if not project:"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa32b979_e9e534a8","line":1108,"in_reply_to":"3afb71cf_9dae502c","updated":"2015-06-15 16:19:35.000000000","message":"Done","commit_id":"fb4b312f6ccc2a0defbcc896ecc62b94b3c0d5ab"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1b854d4a9919c78b40f7bd30240bc6470aeb9304","unresolved":false,"context_lines":[{"line_number":1109,"context_line":"                project \u003d None"},{"line_number":1110,"context_line":""},{"line_number":1111,"context_line":"        if not project:"},{"line_number":1112,"context_line":"            project \u003d \u0027incorrectly-configured\u0027"},{"line_number":1113,"context_line":"            project_version \u003d \u00270\u0027"},{"line_number":1114,"context_line":"        else:"},{"line_number":1115,"context_line":"            project_version \u003d _get_project_version(project)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3afb71cf_7d76f406","line":1112,"updated":"2015-06-11 02:34:19.000000000","message":"I think it would be better to leave it off. I also like the using IP. IP addresses will also catch the eye and provide a bit of info.","commit_id":"fb4b312f6ccc2a0defbcc896ecc62b94b3c0d5ab"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"ae4bf02552fbad78b6fdca3f3230062768b3375c","unresolved":false,"context_lines":[{"line_number":1109,"context_line":"                project \u003d None"},{"line_number":1110,"context_line":""},{"line_number":1111,"context_line":"        if not project:"},{"line_number":1112,"context_line":"            project \u003d \u0027incorrectly-configured\u0027"},{"line_number":1113,"context_line":"            project_version \u003d \u00270\u0027"},{"line_number":1114,"context_line":"        else:"},{"line_number":1115,"context_line":"            project_version \u003d _get_project_version(project)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3afb71cf_cd70dda6","line":1112,"updated":"2015-06-09 20:37:23.000000000","message":"swift is not incorrectly configured; it\u0027d make more sense to simply exclude the second project rather than include what amounts to garbage","commit_id":"fb4b312f6ccc2a0defbcc896ecc62b94b3c0d5ab"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"635d486a2bde29d90078b7d13de6999b363596a0","unresolved":false,"context_lines":[{"line_number":1109,"context_line":"                project \u003d None"},{"line_number":1110,"context_line":""},{"line_number":1111,"context_line":"        if not project:"},{"line_number":1112,"context_line":"            project \u003d \u0027incorrectly-configured\u0027"},{"line_number":1113,"context_line":"            project_version \u003d \u00270\u0027"},{"line_number":1114,"context_line":"        else:"},{"line_number":1115,"context_line":"            project_version \u003d _get_project_version(project)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3afb71cf_d80def8f","line":1112,"in_reply_to":"3afb71cf_7d76f406","updated":"2015-06-11 08:13:52.000000000","message":"++ The IP Address would be awesome if we can get it. However, if it is too difficult, an empty/missing string would also standout.","commit_id":"fb4b312f6ccc2a0defbcc896ecc62b94b3c0d5ab"},{"author":{"_account_id":15640,"name":"Roxana Gherle","email":"roxana.gherle@hpe.com","username":"roxana-gherle"},"change_message_id":"e4bd2120230509d8b28915b410176d22377b86f4","unresolved":false,"context_lines":[{"line_number":1109,"context_line":"                project \u003d None"},{"line_number":1110,"context_line":""},{"line_number":1111,"context_line":"        if not project:"},{"line_number":1112,"context_line":"            project \u003d \u0027incorrectly-configured\u0027"},{"line_number":1113,"context_line":"            project_version \u003d \u00270\u0027"},{"line_number":1114,"context_line":"        else:"},{"line_number":1115,"context_line":"            project_version \u003d _get_project_version(project)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3afb71cf_49c02550","line":1112,"in_reply_to":"3afb71cf_cd70dda6","updated":"2015-06-10 22:12:21.000000000","message":"One advantage for setting a project\u003dunknown or n/a is that we will be able to find out which services are still not fully configured to pass this config option because a string like \u0027n/a\u0027/\u0027unknown\u0027 would catch the eye, but I agree that \u0027incorrectly-configured\u0027 is maybe too much.","commit_id":"fb4b312f6ccc2a0defbcc896ecc62b94b3c0d5ab"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"51183860340eefb87c163daca39f9763b73c5817","unresolved":false,"context_lines":[{"line_number":1109,"context_line":"                project \u003d None"},{"line_number":1110,"context_line":""},{"line_number":1111,"context_line":"        if not project:"},{"line_number":1112,"context_line":"            project \u003d \u0027incorrectly-configured\u0027"},{"line_number":1113,"context_line":"            project_version \u003d \u00270\u0027"},{"line_number":1114,"context_line":"        else:"},{"line_number":1115,"context_line":"            project_version \u003d _get_project_version(project)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3afb71cf_e20a8389","line":1112,"in_reply_to":"3afb71cf_cd70dda6","updated":"2015-06-09 21:00:50.000000000","message":"how about \u0027unknow\u0027 or binded IP?","commit_id":"fb4b312f6ccc2a0defbcc896ecc62b94b3c0d5ab"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"70bc8238c13be64bf65fe11da4d76da394997d47","unresolved":false,"context_lines":[{"line_number":1109,"context_line":"                project \u003d None"},{"line_number":1110,"context_line":""},{"line_number":1111,"context_line":"        if not project:"},{"line_number":1112,"context_line":"            project \u003d \u0027incorrectly-configured\u0027"},{"line_number":1113,"context_line":"            project_version \u003d \u00270\u0027"},{"line_number":1114,"context_line":"        else:"},{"line_number":1115,"context_line":"            project_version \u003d _get_project_version(project)"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa32b979_e95534c6","line":1112,"in_reply_to":"3afb71cf_d80def8f","updated":"2015-06-15 16:19:35.000000000","message":"I definitely don\u0027t want to leave it off, so I\u0027ve changed it to \u0027unknown\u0027. If we want to log IP address we should do that on the Keystone side. This isn\u0027t a user agent concern.","commit_id":"fb4b312f6ccc2a0defbcc896ecc62b94b3c0d5ab"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1b854d4a9919c78b40f7bd30240bc6470aeb9304","unresolved":false,"context_lines":[{"line_number":1126,"context_line":"        # same as calling Session.load_from_conf_options(CONF, GROUP)"},{"line_number":1127,"context_line":"        # however we can\u0027t do that because we have to use _conf_get to"},{"line_number":1128,"context_line":"        # support the paste.ini options."},{"line_number":1129,"context_line":""},{"line_number":1130,"context_line":"        sess \u003d session.Session.construct(dict("},{"line_number":1131,"context_line":"            cert\u003dself._conf_get(\u0027certfile\u0027),"},{"line_number":1132,"context_line":"            key\u003dself._conf_get(\u0027keyfile\u0027),"}],"source_content_type":"text/x-python","patch_set":12,"id":"3afb71cf_dd360850","line":1129,"updated":"2015-06-11 02:34:19.000000000","message":"revert the unrelated whitespace change to avoid merge conflicts.","commit_id":"fb4b312f6ccc2a0defbcc896ecc62b94b3c0d5ab"},{"author":{"_account_id":15640,"name":"Roxana Gherle","email":"roxana.gherle@hpe.com","username":"roxana-gherle"},"change_message_id":"a5c962786593eebc94edb09242dca51c6bed6622","unresolved":false,"context_lines":[{"line_number":1113,"context_line":"                project \u003d None"},{"line_number":1114,"context_line":""},{"line_number":1115,"context_line":"        if not project:"},{"line_number":1116,"context_line":"            project \u003d \u0027incorrectly-configured\u0027"},{"line_number":1117,"context_line":"            project_version \u003d \u00270\u0027"},{"line_number":1118,"context_line":"        else:"},{"line_number":1119,"context_line":"            project_version \u003d _get_project_version(project)"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa32b979_6c829202","line":1116,"updated":"2015-06-15 16:32:45.000000000","message":"I think you forgot to change this to \u0027unknown\u0027 ?","commit_id":"519c784f92b421aa7b4abfc459ab302f9289b207"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"c5e14ae30bc6430eb1a7c76f76bf2e474612f83d","unresolved":false,"context_lines":[{"line_number":931,"context_line":"                project\u003dproject,"},{"line_number":932,"context_line":"                project_version\u003dproject_version)"},{"line_number":933,"context_line":""},{"line_number":934,"context_line":"        ua_template \u003d (\u0027{project} \u0027"},{"line_number":935,"context_line":"                       \u0027keystonemiddleware.auth_token/{ksm_version}\u0027)"},{"line_number":936,"context_line":"        return ua_template.format("},{"line_number":937,"context_line":"            project\u003dproject,"}],"source_content_type":"text/x-python","patch_set":17,"id":"ba3cc151_b2064c1a","line":934,"updated":"2015-07-01 21:14:29.000000000","message":"(nit) now this will contain an empty space if no project is found","commit_id":"27d82e7675b8e5a768d368eaf3064288d969ea6d"},{"author":{"_account_id":15640,"name":"Roxana Gherle","email":"roxana.gherle@hpe.com","username":"roxana-gherle"},"change_message_id":"1ee172dc1460f44efd60ed418bf7b94003af3a5a","unresolved":false,"context_lines":[{"line_number":931,"context_line":"                project\u003dproject,"},{"line_number":932,"context_line":"                project_version\u003dproject_version)"},{"line_number":933,"context_line":""},{"line_number":934,"context_line":"        ua_template \u003d (\u0027{project} \u0027"},{"line_number":935,"context_line":"                       \u0027keystonemiddleware.auth_token/{ksm_version}\u0027)"},{"line_number":936,"context_line":"        return ua_template.format("},{"line_number":937,"context_line":"            project\u003dproject,"}],"source_content_type":"text/x-python","patch_set":17,"id":"ba3cc151_127b788d","line":934,"in_reply_to":"ba3cc151_b2064c1a","updated":"2015-07-01 21:27:10.000000000","message":"Done","commit_id":"27d82e7675b8e5a768d368eaf3064288d969ea6d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1220d6048d238e63b46690a223686f7651b89efc","unresolved":false,"context_lines":[{"line_number":201,"context_line":""},{"line_number":202,"context_line":"import datetime"},{"line_number":203,"context_line":"import logging"},{"line_number":204,"context_line":"import pkg_resources"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"from keystoneclient import access"},{"line_number":207,"context_line":"from keystoneclient import adapter"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba3cc151_c135a0db","line":204,"updated":"2015-07-06 22:39:59.000000000","message":"pkg_resources isn\u0027t part of the standard library so this should be in the section below.","commit_id":"ead8e9e9aeeff26f8277c86ca9af5fbef195b051"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"694e68236f407ee2fc85a848ec99da90b4b808a5","unresolved":false,"context_lines":[{"line_number":201,"context_line":""},{"line_number":202,"context_line":"import datetime"},{"line_number":203,"context_line":"import logging"},{"line_number":204,"context_line":"import pkg_resources"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"from keystoneclient import access"},{"line_number":207,"context_line":"from keystoneclient import adapter"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba3cc151_24d3ccd6","line":204,"in_reply_to":"ba3cc151_c135a0db","updated":"2015-07-08 19:58:06.000000000","message":"Done","commit_id":"ead8e9e9aeeff26f8277c86ca9af5fbef195b051"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1220d6048d238e63b46690a223686f7651b89efc","unresolved":false,"context_lines":[{"line_number":920,"context_line":"        except cfg.NoSuchOptError:"},{"line_number":921,"context_line":"            try:"},{"line_number":922,"context_line":"                # CONF.project may not exist for all services as not"},{"line_number":923,"context_line":"                # everthing is using oslo_config"},{"line_number":924,"context_line":"                project \u003d CONF.project"},{"line_number":925,"context_line":"            except cfg.NoSuchOptError:"},{"line_number":926,"context_line":"                project \u003d \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba3cc151_416190a7","line":923,"updated":"2015-07-06 22:39:59.000000000","message":"change \"everthing\" to \"everything\", or change it to \"all services\".\n\nThis comment should also say that CONF.project may not exist because not all services define a \"project\" config option in the DEFAULT group.\n\nAlso, the logic here is strange because we use _conf_get in lots of places and in all those places it would fail in the same way if the service doesn\u0027t use oslo.config, but there\u0027s no check for raising the exception. So why is this one handled in a special way? I don\u0027t understand why this one is special and the comment doesn\u0027t explain it.","commit_id":"ead8e9e9aeeff26f8277c86ca9af5fbef195b051"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"694e68236f407ee2fc85a848ec99da90b4b808a5","unresolved":false,"context_lines":[{"line_number":920,"context_line":"        except cfg.NoSuchOptError:"},{"line_number":921,"context_line":"            try:"},{"line_number":922,"context_line":"                # CONF.project may not exist for all services as not"},{"line_number":923,"context_line":"                # everthing is using oslo_config"},{"line_number":924,"context_line":"                project \u003d CONF.project"},{"line_number":925,"context_line":"            except cfg.NoSuchOptError:"},{"line_number":926,"context_line":"                project \u003d \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba3cc151_04e568a2","line":923,"in_reply_to":"ba3cc151_416190a7","updated":"2015-07-08 19:58:06.000000000","message":"Done as discussed in IRC","commit_id":"ead8e9e9aeeff26f8277c86ca9af5fbef195b051"}],"keystonemiddleware/tests/unit/auth_token/test_auth_token_middleware.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"ae4bf02552fbad78b6fdca3f3230062768b3375c","unresolved":false,"context_lines":[{"line_number":2667,"context_line":"        self.cfg.config(auth_plugin\u003d\u0027password\u0027,"},{"line_number":2668,"context_line":"                        password\u003dself.password,"},{"line_number":2669,"context_line":"                        project_id\u003dself.project_id,"},{"line_number":2670,"context_line":"                        user_domain_id\u003d\u0027userdomainid\u0027,"},{"line_number":2671,"context_line":"                        group\u003dself.section)"},{"line_number":2672,"context_line":""},{"line_number":2673,"context_line":"    def test_no_project_configured(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"3afb71cf_4d674db7","line":2670,"updated":"2015-06-09 20:37:23.000000000","message":"why is this one hardcoded?","commit_id":"fb4b312f6ccc2a0defbcc896ecc62b94b3c0d5ab"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1220d6048d238e63b46690a223686f7651b89efc","unresolved":false,"context_lines":[{"line_number":2434,"context_line":"        app \u003d self.create_simple_middleware(body\u003dbody, conf\u003dconf)"},{"line_number":2435,"context_line":""},{"line_number":2436,"context_line":"        project \u003d \u0027\u0027"},{"line_number":2437,"context_line":"        ksm_dist \u003d pkg_resources.get_distribution(\u0027keystonemiddleware\u0027)"},{"line_number":2438,"context_line":"        ksm_version \u003d ksm_dist.version"},{"line_number":2439,"context_line":"        self._assert_user_agent(app, project, ksm_version)"},{"line_number":2440,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"ba3cc151_017068db","line":2437,"updated":"2015-07-06 22:39:59.000000000","message":"suggest use _create_app so the test doesn\u0027t rely on being able to get the keystonemiddleware distribution.","commit_id":"ead8e9e9aeeff26f8277c86ca9af5fbef195b051"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"694e68236f407ee2fc85a848ec99da90b4b808a5","unresolved":false,"context_lines":[{"line_number":2434,"context_line":"        app \u003d self.create_simple_middleware(body\u003dbody, conf\u003dconf)"},{"line_number":2435,"context_line":""},{"line_number":2436,"context_line":"        project \u003d \u0027\u0027"},{"line_number":2437,"context_line":"        ksm_dist \u003d pkg_resources.get_distribution(\u0027keystonemiddleware\u0027)"},{"line_number":2438,"context_line":"        ksm_version \u003d ksm_dist.version"},{"line_number":2439,"context_line":"        self._assert_user_agent(app, project, ksm_version)"},{"line_number":2440,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"ba3cc151_c7a462a7","line":2437,"in_reply_to":"ba3cc151_017068db","updated":"2015-07-08 19:58:06.000000000","message":"Done","commit_id":"ead8e9e9aeeff26f8277c86ca9af5fbef195b051"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1220d6048d238e63b46690a223686f7651b89efc","unresolved":false,"context_lines":[{"line_number":2454,"context_line":"        project_version \u003d uuid.uuid4().hex"},{"line_number":2455,"context_line":""},{"line_number":2456,"context_line":"        conf \u003d {\u0027username\u0027: self.username, \u0027auth_url\u0027: self.auth_url}"},{"line_number":2457,"context_line":"        with mock.patch.object(cfg.CONF, \u0027project\u0027, new\u003dproject, create\u003dTrue):"},{"line_number":2458,"context_line":"            app \u003d self._create_app(conf, project_version)"},{"line_number":2459,"context_line":"        project \u003d \u0027{0}/{1} \u0027.format(project, project_version)"},{"line_number":2460,"context_line":"        self._assert_user_agent(app, project, project_version)"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba3cc151_612054f8","line":2457,"updated":"2015-07-06 22:39:59.000000000","message":"this makes assumptions about how cfg.CONF is implemented. Use a config fixture instead: http://docs.openstack.org/developer/oslo.config/fixture.html","commit_id":"ead8e9e9aeeff26f8277c86ca9af5fbef195b051"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"694e68236f407ee2fc85a848ec99da90b4b808a5","unresolved":false,"context_lines":[{"line_number":2454,"context_line":"        project_version \u003d uuid.uuid4().hex"},{"line_number":2455,"context_line":""},{"line_number":2456,"context_line":"        conf \u003d {\u0027username\u0027: self.username, \u0027auth_url\u0027: self.auth_url}"},{"line_number":2457,"context_line":"        with mock.patch.object(cfg.CONF, \u0027project\u0027, new\u003dproject, create\u003dTrue):"},{"line_number":2458,"context_line":"            app \u003d self._create_app(conf, project_version)"},{"line_number":2459,"context_line":"        project \u003d \u0027{0}/{1} \u0027.format(project, project_version)"},{"line_number":2460,"context_line":"        self._assert_user_agent(app, project, project_version)"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba3cc151_a7b83e12","line":2457,"in_reply_to":"ba3cc151_612054f8","updated":"2015-07-08 19:58:06.000000000","message":"I don\u0027t think I can use a fixture hereis is specifically testing the use of that property, which is not a configuration option.","commit_id":"ead8e9e9aeeff26f8277c86ca9af5fbef195b051"}]}
