)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"206d198085f490d71dadb302802ecf6287713c1e","unresolved":false,"context_lines":[{"line_number":9,"context_line":"nova didn\u0027t specify cert file when doing verify project id"},{"line_number":10,"context_line":"in api layer inside quota and flavor function, this leads"},{"line_number":11,"context_line":"to SSL connection error when https is used."},{"line_number":12,"context_line":"This patch added the certfile from keystone_authtoken section"},{"line_number":13,"context_line":"directly because nova anyway need get token before enter"},{"line_number":14,"context_line":"api layer from keystone side."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"df3967d1_a79191f3","line":12,"updated":"2017-08-04 19:39:34.000000000","message":"need to update this statement of what the patch does when you change to using the method Eric described.","commit_id":"c3a38b6bc7852dad4900717ebafc3d45efd72ef1"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"7a94d32b0d07a2a7ce5689fca2eec361587bcbd3","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     jichenjc \u003cjichenjc@cn.ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-08-19 07:07:51 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"WIP: use conf for keystone session creation"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Nova creates a session back to keystone to verify project ids for"},{"line_number":10,"context_line":"quota and flavor access APIs. The session that was being created was"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"7f287b81_d6382d3e","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":5},"updated":"2017-08-25 12:45:25.000000000","message":"remove WIP","commit_id":"f16abfe75649e7c41fe6299479c5dbe79e0a9f6d"}],"nova/api/openstack/identity.py":[{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"bda40c8dab2fd93c130bc03e2ebdeb2f81a5e88c","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    \"\"\""},{"line_number":34,"context_line":"    sess \u003d session.Session(auth\u003dcontext.get_auth_plugin(),"},{"line_number":35,"context_line":"                           cert\u003dCONF.keystone_authtoken.certfile)"},{"line_number":36,"context_line":"    failure \u003d webob.exc.HTTPBadRequest("},{"line_number":37,"context_line":"            explanation\u003d_(\"Project ID %s is not a valid project.\") %"},{"line_number":38,"context_line":"            project_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff346bd7_8c85b1d1","line":35,"range":{"start_line":35,"start_character":27,"end_line":35,"end_character":64},"updated":"2017-07-27 15:01:18.000000000","message":"The bug was about verification of the server certificate, not needing to pass a client certificate, so this should be verify\u003dCONF.keystone_authtoken.cafile","commit_id":"7359b31a2bd79d75e041114c7f559e101bc30506"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"5f753d661fc17e3c15baaacbed0b74ab101c0d79","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    \"\"\""},{"line_number":34,"context_line":"    sess \u003d session.Session(auth\u003dcontext.get_auth_plugin(),"},{"line_number":35,"context_line":"                           cert\u003dCONF.keystone_authtoken.certfile)"},{"line_number":36,"context_line":"    failure \u003d webob.exc.HTTPBadRequest("},{"line_number":37,"context_line":"            explanation\u003d_(\"Project ID %s is not a valid project.\") %"},{"line_number":38,"context_line":"            project_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff346bd7_abc83e73","line":35,"range":{"start_line":35,"start_character":27,"end_line":35,"end_character":64},"in_reply_to":"ff346bd7_8c85b1d1","updated":"2017-07-28 08:35:11.000000000","message":"thanks, appreciate your help~","commit_id":"7359b31a2bd79d75e041114c7f559e101bc30506"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"db20cd444f80cded1d4bd8743b4882b1183e618a","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    \"\"\""},{"line_number":34,"context_line":"    sess \u003d session.Session(auth\u003dcontext.get_auth_plugin(),"},{"line_number":35,"context_line":"                           verify\u003dCONF.keystone_authtoken.cafile)"},{"line_number":36,"context_line":"    failure \u003d webob.exc.HTTPBadRequest("},{"line_number":37,"context_line":"            explanation\u003d_(\"Project ID %s is not a valid project.\") %"},{"line_number":38,"context_line":"            project_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"df3967d1_61faf975","line":35,"updated":"2017-08-01 12:03:00.000000000","message":"I\u0027m surprised that we don\u0027t get all these params automatically. Is there a different way to build the session that means we wouldn\u0027t have to add params here specifically?","commit_id":"c3a38b6bc7852dad4900717ebafc3d45efd72ef1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"561dab1aa41225af97fdae586f7d1c65cc368246","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    \"\"\""},{"line_number":34,"context_line":"    sess \u003d session.Session(auth\u003dcontext.get_auth_plugin(),"},{"line_number":35,"context_line":"                           verify\u003dCONF.keystone_authtoken.cafile)"},{"line_number":36,"context_line":"    failure \u003d webob.exc.HTTPBadRequest("},{"line_number":37,"context_line":"            explanation\u003d_(\"Project ID %s is not a valid project.\") %"},{"line_number":38,"context_line":"            project_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"df3967d1_8798cd74","line":35,"in_reply_to":"df3967d1_61faf975","updated":"2017-08-04 19:33:09.000000000","message":"Yes, it would be:\n\n from keystoneauth1 import loading as ks_loading\n ...\n sess \u003d ks_loading.load_session_from_conf_options(auth\u003dcontext.get_auth_plugin())\n\nIt\u0027s a little confusing, but the `cafile` conf option does eventually filter through to the `verify` Session attribute:\n\n- `cafile` becomes `cacert`: https://github.com/openstack/keystoneauth/blob/master/keystoneauth1/loading/session.py#L229\n- `cacert` becomes `verify`: https://github.com/openstack/keystoneauth/blob/master/keystoneauth1/loading/session.py#L67-L71","commit_id":"c3a38b6bc7852dad4900717ebafc3d45efd72ef1"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"2296e20b046d52fc7faad494ca6a1d1d7a40ae34","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    \"\"\""},{"line_number":34,"context_line":"    sess \u003d session.Session(auth\u003dcontext.get_auth_plugin(),"},{"line_number":35,"context_line":"                           verify\u003dCONF.keystone_authtoken.cafile)"},{"line_number":36,"context_line":"    failure \u003d webob.exc.HTTPBadRequest("},{"line_number":37,"context_line":"            explanation\u003d_(\"Project ID %s is not a valid project.\") %"},{"line_number":38,"context_line":"            project_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"df3967d1_f399ff6d","line":35,"in_reply_to":"df3967d1_61faf975","updated":"2017-08-09 09:30:12.000000000","message":"ok, that\u0027s a good suggestion, maybe refer to vendordata_dynamic , will dig more and see whether that works or not\n\n 45     if not _ADMIN_AUTH:\n 46         _ADMIN_AUTH \u003d ks_loading.load_auth_from_conf_options(\n 47             conf, nova.conf.vendordata.vendordata_group.name)","commit_id":"c3a38b6bc7852dad4900717ebafc3d45efd72ef1"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"9926857842bb92ddf35001191349b2f6c58d9ba2","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    \"\"\""},{"line_number":34,"context_line":"    sess \u003d session.Session(auth\u003dcontext.get_auth_plugin(),"},{"line_number":35,"context_line":"                           verify\u003dCONF.keystone_authtoken.cafile)"},{"line_number":36,"context_line":"    failure \u003d webob.exc.HTTPBadRequest("},{"line_number":37,"context_line":"            explanation\u003d_(\"Project ID %s is not a valid project.\") %"},{"line_number":38,"context_line":"            project_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"df3967d1_275da014","line":35,"in_reply_to":"df3967d1_8770cd09","updated":"2017-08-04 19:45:37.000000000","message":"ignore what I said about cacert...","commit_id":"c3a38b6bc7852dad4900717ebafc3d45efd72ef1"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"2296e20b046d52fc7faad494ca6a1d1d7a40ae34","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    \"\"\""},{"line_number":34,"context_line":"    sess \u003d session.Session(auth\u003dcontext.get_auth_plugin(),"},{"line_number":35,"context_line":"                           verify\u003dCONF.keystone_authtoken.cafile)"},{"line_number":36,"context_line":"    failure \u003d webob.exc.HTTPBadRequest("},{"line_number":37,"context_line":"            explanation\u003d_(\"Project ID %s is not a valid project.\") %"},{"line_number":38,"context_line":"            project_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f436f4f_c37d4d6f","line":35,"in_reply_to":"df3967d1_8798cd74","updated":"2017-08-09 09:30:12.000000000","message":"ok, I will think about this solution, thanks~","commit_id":"c3a38b6bc7852dad4900717ebafc3d45efd72ef1"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"60a60952878de4eeb6f3cf1559e0f36534458a9f","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    \"\"\""},{"line_number":34,"context_line":"    sess \u003d session.Session(auth\u003dcontext.get_auth_plugin(),"},{"line_number":35,"context_line":"                           verify\u003dCONF.keystone_authtoken.cafile)"},{"line_number":36,"context_line":"    failure \u003d webob.exc.HTTPBadRequest("},{"line_number":37,"context_line":"            explanation\u003d_(\"Project ID %s is not a valid project.\") %"},{"line_number":38,"context_line":"            project_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"df3967d1_8770cd09","line":35,"in_reply_to":"df3967d1_8798cd74","updated":"2017-08-04 19:38:11.000000000","message":"you meant cacert. But yeah, that sounds right. Thanks!","commit_id":"c3a38b6bc7852dad4900717ebafc3d45efd72ef1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"2491e50ff74886bc661ddfcb8a312c83e22c4ccb","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    \"\"\""},{"line_number":35,"context_line":"    sess \u003d ks_loading.load_session_from_conf_options("},{"line_number":36,"context_line":"        auth\u003dcontext.get_auth_plugin())"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    failure \u003d webob.exc.HTTPBadRequest("},{"line_number":39,"context_line":"            explanation\u003d_(\"Project ID %s is not a valid project.\") %"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f436f4f_711e62bb","line":36,"updated":"2017-08-09 14:19:14.000000000","message":"Sorry for the confusion - you\u0027re actually going to need to specify the CONF and a group name in this call.  If you were planning to use [keystone_authtoken]cafile before, I imagine it makes sense to use the keystone_authtoken group.  So it would look something like:\n\n sess \u003d ks_loading.load_session_from_conf_options(\n     CONF, \u0027keystone_authtoken\u0027, auth\u003dcontext.get_auth_plugin())","commit_id":"562834f2470e18a202ac7728cdd2b8874920eb18"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"f756d31542be3e30bb45b0ba9749efa15977a5ae","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    \"\"\""},{"line_number":35,"context_line":"    sess \u003d ks_loading.load_session_from_conf_options("},{"line_number":36,"context_line":"        auth\u003dcontext.get_auth_plugin())"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    failure \u003d webob.exc.HTTPBadRequest("},{"line_number":39,"context_line":"            explanation\u003d_(\"Project ID %s is not a valid project.\") %"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f436f4f_2ca081f4","line":36,"in_reply_to":"9f436f4f_711e62bb","updated":"2017-08-09 14:31:01.000000000","message":"yep, I was just uploading a patch with the same. Also need to fix pep8 and UTs.","commit_id":"562834f2470e18a202ac7728cdd2b8874920eb18"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"927656916cb5600f8cc5a940ac04be846c5af0eb","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from keystoneauth1 import exceptions as kse"},{"line_number":16,"context_line":"from keystoneauth1 import loading as ks_loading"},{"line_number":17,"context_line":"from oslo_log import log as logging"},{"line_number":18,"context_line":"import webob"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9f436f4f_98b6b4dc","line":16,"updated":"2017-08-17 17:38:35.000000000","message":"Don\u0027t do this. Use efried\u0027s utility helper method nova.util.get_ksa_adapter.","commit_id":"e6db9c34f1b8473674758a04447ba7a346e2ef6f"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"927656916cb5600f8cc5a940ac04be846c5af0eb","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    an HTTPBadRequest is emitted."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    \"\"\""},{"line_number":35,"context_line":"    sess \u003d ks_loading.load_session_from_conf_options("},{"line_number":36,"context_line":"        CONF, \u0027keystone\u0027, auth\u003dcontext.get_auth_plugin())"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    failure \u003d webob.exc.HTTPBadRequest("}],"source_content_type":"text/x-python","patch_set":8,"id":"9f436f4f_989fd464","line":35,"updated":"2017-08-17 17:38:35.000000000","message":"Then here it\u0027s nova.util.get_ksa_adapter(CONF, \u0027keystone\u0027, ksa_auth\u003dcontex.get_auth_plugin)\n\nwhich will get an Adapter here instead of a Session. An Adapter is a Session that\u0027s mounted to a service. then you can remove the endpoint_filter calls below. That\u0027ll make it nicer to add additional calls as needed.\n\nDoing this will allow operators to do things like choose public vs. internal interface or provide an endpoint_override if they need do - and will make keystone consistent with glance, ironic, neutron and cinder.","commit_id":"e6db9c34f1b8473674758a04447ba7a346e2ef6f"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"927656916cb5600f8cc5a940ac04be846c5af0eb","unresolved":false,"context_lines":[{"line_number":40,"context_line":"            project_id)"},{"line_number":41,"context_line":"    try:"},{"line_number":42,"context_line":"        resp \u003d sess.get(\u0027/projects/%s\u0027 % project_id,"},{"line_number":43,"context_line":"                        endpoint_filter\u003d{"},{"line_number":44,"context_line":"                            \u0027service_type\u0027: \u0027identity\u0027,"},{"line_number":45,"context_line":"                            \u0027version\u0027: (3, 0)"},{"line_number":46,"context_line":"                        },"},{"line_number":47,"context_line":"                        raise_exc\u003dFalse)"},{"line_number":48,"context_line":"    except kse.EndpointNotFound:"},{"line_number":49,"context_line":"        LOG.error("}],"source_content_type":"text/x-python","patch_set":8,"id":"9f436f4f_58b4ccf2","line":46,"range":{"start_line":43,"start_character":24,"end_line":46,"end_character":26},"updated":"2017-08-17 17:38:35.000000000","message":"these can go","commit_id":"e6db9c34f1b8473674758a04447ba7a346e2ef6f"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"beda518b246b90f3c94b63acb07471c7ed10d95b","unresolved":false,"context_lines":[{"line_number":39,"context_line":"            explanation\u003d_(\"Project ID %s is not a valid project.\") %"},{"line_number":40,"context_line":"            project_id)"},{"line_number":41,"context_line":"    try:"},{"line_number":42,"context_line":"        resp \u003d sess.get(\u0027/projects/%s\u0027 % project_id,"},{"line_number":43,"context_line":"                        raise_exc\u003dFalse)"},{"line_number":44,"context_line":"    except kse.EndpointNotFound:"},{"line_number":45,"context_line":"        LOG.error("}],"source_content_type":"text/x-python","patch_set":9,"id":"7f287b81_bee93a81","line":42,"updated":"2017-08-23 15:45:39.000000000","message":"I think you still need the endpoint_filter specification until we can use get_ksa_adapter.","commit_id":"a898031586c9d3244ddb3baad2dd7ce424c4b286"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"3d9edd4557b91aaf883355fb3318853d7216c426","unresolved":false,"context_lines":[{"line_number":39,"context_line":"            explanation\u003d_(\"Project ID %s is not a valid project.\") %"},{"line_number":40,"context_line":"            project_id)"},{"line_number":41,"context_line":"    try:"},{"line_number":42,"context_line":"        resp \u003d sess.get(\u0027/projects/%s\u0027 % project_id,"},{"line_number":43,"context_line":"                        raise_exc\u003dFalse)"},{"line_number":44,"context_line":"    except kse.EndpointNotFound:"},{"line_number":45,"context_line":"        LOG.error("}],"source_content_type":"text/x-python","patch_set":9,"id":"7f287b81_95876662","line":42,"in_reply_to":"7f287b81_bee93a81","updated":"2017-08-24 08:45:03.000000000","message":"right, thanks","commit_id":"a898031586c9d3244ddb3baad2dd7ce424c4b286"}],"nova/conf/keystone.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"1b7660101293b4039aaf58e96b153c4029364641","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# All Rights Reserved."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f436f4f_3e5a1583","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":22},"updated":"2017-08-17 15:38:29.000000000","message":"I think we\u0027re not doing this anymore","commit_id":"e6db9c34f1b8473674758a04447ba7a346e2ef6f"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"0facdef73da79a57373990fe0dbf228c54858fa9","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# All Rights Reserved."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f436f4f_83cf57af","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":22},"in_reply_to":"9f436f4f_18e5240b","updated":"2017-08-18 08:30:57.000000000","message":"ok, will remove","commit_id":"e6db9c34f1b8473674758a04447ba7a346e2ef6f"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"927656916cb5600f8cc5a940ac04be846c5af0eb","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# All Rights Reserved."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f436f4f_18e5240b","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":22},"in_reply_to":"9f436f4f_3e5a1583","updated":"2017-08-17 17:38:35.000000000","message":"It\u0027s literally not been a meaningful phrase in almost a hundred years.","commit_id":"e6db9c34f1b8473674758a04447ba7a346e2ef6f"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"927656916cb5600f8cc5a940ac04be846c5af0eb","unresolved":false,"context_lines":[{"line_number":19,"context_line":"keystone_group \u003d cfg.OptGroup("},{"line_number":20,"context_line":"    \u0027keystone\u0027,"},{"line_number":21,"context_line":"    title\u003d\u0027Keystone Options\u0027,"},{"line_number":22,"context_line":"    help\u003d\u0027Configuration options for the auth service\u0027)"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"def register_opts(conf):"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f436f4f_b81618f1","line":22,"range":{"start_line":22,"start_character":40,"end_line":22,"end_character":44},"updated":"2017-08-17 17:38:35.000000000","message":"identity","commit_id":"e6db9c34f1b8473674758a04447ba7a346e2ef6f"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"927656916cb5600f8cc5a940ac04be846c5af0eb","unresolved":false,"context_lines":[{"line_number":25,"context_line":"def register_opts(conf):"},{"line_number":26,"context_line":"    conf.register_group(keystone_group)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    ks_loading.register_session_conf_options(conf, keystone_group.name)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def list_opts():"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f436f4f_38aea898","line":28,"updated":"2017-08-17 17:38:35.000000000","message":"Don\u0027t do this. Use nova.utils.conf.register_ksa_opts(conf, keystone_group, \u0027identity\u0027)","commit_id":"e6db9c34f1b8473674758a04447ba7a346e2ef6f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"1b7660101293b4039aaf58e96b153c4029364641","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def list_opts():"},{"line_number":32,"context_line":"    return {"},{"line_number":33,"context_line":"        glance_group: ("},{"line_number":34,"context_line":"            ks_loading.get_session_conf_options())"},{"line_number":35,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f436f4f_9e710110","line":33,"range":{"start_line":33,"start_character":8,"end_line":33,"end_character":20},"updated":"2017-08-17 15:38:29.000000000","message":"keystone_group","commit_id":"e6db9c34f1b8473674758a04447ba7a346e2ef6f"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"927656916cb5600f8cc5a940ac04be846c5af0eb","unresolved":false,"context_lines":[{"line_number":31,"context_line":"def list_opts():"},{"line_number":32,"context_line":"    return {"},{"line_number":33,"context_line":"        glance_group: ("},{"line_number":34,"context_line":"            ks_loading.get_session_conf_options())"},{"line_number":35,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f436f4f_f878202c","line":34,"updated":"2017-08-17 17:38:35.000000000","message":"nova.conf.utils.get_ksa_adapter_options()","commit_id":"e6db9c34f1b8473674758a04447ba7a346e2ef6f"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"2e550c504171b332d8cff5fd568dd9a2ad0375dc","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"keystone_group \u003d cfg.OptGroup("},{"line_number":19,"context_line":"    \u0027keystone\u0027,"},{"line_number":20,"context_line":"    title\u003d\u0027Keystone Options\u0027,"},{"line_number":21,"context_line":"    help\u003d\u0027Configuration options for the identity service\u0027)"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"7f287b81_ea49328b","line":19,"range":{"start_line":19,"start_character":5,"end_line":19,"end_character":13},"updated":"2017-09-04 08:08:32.000000000","message":"my local config sample file already has a keystone group, I\u0027m not sure where it is coming from yet.","commit_id":"d5441e7366567e9cfe119c79c84303f26c9e99f4"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"f0313235dd869ff4725d8b9a87a601fbf6712a70","unresolved":false,"context_lines":[{"line_number":18,"context_line":"keystone_group \u003d cfg.OptGroup("},{"line_number":19,"context_line":"    \u0027keystone\u0027,"},{"line_number":20,"context_line":"    title\u003d\u0027Keystone Options\u0027,"},{"line_number":21,"context_line":"    help\u003d\u0027Configuration options for the identity service\u0027)"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"def register_opts(conf):"}],"source_content_type":"text/x-python","patch_set":12,"id":"7f287b81_aa3a0a31","line":21,"updated":"2017-09-04 07:50:42.000000000","message":"I feel there need a better comment about those keystone option is used for what functional in the nova. And what kind of conf value suggested.","commit_id":"d5441e7366567e9cfe119c79c84303f26c9e99f4"}],"nova/tests/unit/test_identity.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"b585550d3ff8cf61c5c6277544c1fc567802dcf1","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from keystoneauth1 import exceptions as kse"},{"line_number":19,"context_line":"from keystoneauth1 import loading as ks_loading"},{"line_number":20,"context_line":"from keystoneauth1.session import Session"},{"line_number":21,"context_line":"import webob"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from nova.api.openstack import identity"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f436f4f_50bc6f04","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":41},"updated":"2017-08-09 20:04:10.000000000","message":"I\u0027m coming in before pep8, but I don\u0027t think you\u0027re allowed to import things that ain\u0027t modules.","commit_id":"bce4a5278b873c554a47ad55e5b6a54368d27239"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"8fca94b410266d620a4bc199ba08fd7d3effdb23","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from keystoneauth1 import exceptions as kse"},{"line_number":19,"context_line":"from keystoneauth1 import loading as ks_loading"},{"line_number":20,"context_line":"from keystoneauth1.session import Session"},{"line_number":21,"context_line":"import webob"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from nova.api.openstack import identity"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f436f4f_90e3f705","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":41},"in_reply_to":"9f436f4f_50bc6f04","updated":"2017-08-09 20:30:21.000000000","message":"first I\u0027ve heard of that, and the tox pep8 job passed locally...","commit_id":"bce4a5278b873c554a47ad55e5b6a54368d27239"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"e477c9793711fed525efdaeb3e51d4ef34817029","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from keystoneauth1 import exceptions as kse"},{"line_number":19,"context_line":"from keystoneauth1 import loading as ks_loading"},{"line_number":20,"context_line":"from keystoneauth1.session import Session"},{"line_number":21,"context_line":"import webob"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from nova.api.openstack import identity"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f436f4f_a9a44cba","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":41},"in_reply_to":"9f436f4f_90e3f705","updated":"2017-08-10 07:35:33.000000000","message":"I sometimes use this kind of code, it should work","commit_id":"bce4a5278b873c554a47ad55e5b6a54368d27239"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"b585550d3ff8cf61c5c6277544c1fc567802dcf1","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    \"\"\""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    @mock.patch.object(ks_loading, \u0027load_session_from_conf_options\u0027)"},{"line_number":73,"context_line":"    def test_good_id(self, mock_load):"},{"line_number":74,"context_line":"        \"\"\"Test response 200."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        This indicates we have permissions, and we have definitively"},{"line_number":77,"context_line":"        found the project exists."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        \"\"\""},{"line_number":80,"context_line":"        session \u003d mock.create_autospec(Session)"},{"line_number":81,"context_line":"        session.get.return_value \u003d FakeResponse(200)"},{"line_number":82,"context_line":"        mock_load.return_value \u003d session"},{"line_number":83,"context_line":"        self.assertTrue(identity.verify_project_id(mock.MagicMock(), \"foo\"))"},{"line_number":84,"context_line":"        session.get.assert_called_once_with("},{"line_number":85,"context_line":"            \u0027/projects/foo\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f436f4f_90709774","line":82,"range":{"start_line":72,"start_character":0,"end_line":82,"end_character":40},"updated":"2017-08-09 20:04:10.000000000","message":"Set up all the mocks in setUp().  (Yes, I would have had the same comment if I had reviewed the previous revision.  But now even more so, given it\u0027s \u003e1LOC.)","commit_id":"bce4a5278b873c554a47ad55e5b6a54368d27239"}],"releasenotes/notes/add_keystone_option-138dff5efb9a53aa.yaml":[{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"a77b9102d99cd1c582985ad8544a8728881fef1f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added [keystone] configuration group so when doing quota set"},{"line_number":5,"context_line":"    or flavor access validation, nova will use the configuration"},{"line_number":6,"context_line":"    inside this section to communicate with keystone by using"},{"line_number":7,"context_line":"    keystoneauth1. Refer to nova \u003c-\u003e glance or nova \u003c-\u003e neutron"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"9f436f4f_8960ad37","line":4,"updated":"2017-08-17 16:24:35.000000000","message":"I\u0027d probably reword this a bit, something like:\n\nA new ``keystone`` config section is added for controlling how nova communicates with keystone apart from token authentication. The latter is still controlled by the ``keystone_authtoken`` section. This new section is more similar to existing ``glance`` and ``neutron`` config sections and will be used for things like project_id validation in quota and flavor access APIs. For details on supported options, refer to the configuration reference.","commit_id":"e6db9c34f1b8473674758a04447ba7a346e2ef6f"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"a77b9102d99cd1c582985ad8544a8728881fef1f","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    or flavor access validation, nova will use the configuration"},{"line_number":6,"context_line":"    inside this section to communicate with keystone by using"},{"line_number":7,"context_line":"    keystoneauth1. Refer to nova \u003c-\u003e glance or nova \u003c-\u003e neutron"},{"line_number":8,"context_line":"    communcation for further information."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"9f436f4f_89d0ad55","line":8,"range":{"start_line":8,"start_character":4,"end_line":8,"end_character":16},"updated":"2017-08-17 16:24:35.000000000","message":"communication","commit_id":"e6db9c34f1b8473674758a04447ba7a346e2ef6f"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"a79f670619d7a713cb6ecaf562dc4535fa2cfdca","unresolved":false,"context_lines":[{"line_number":8,"context_line":"    to existing ``glance`` and ``neutron`` config sections"},{"line_number":9,"context_line":"    and will be used for things like project_id validation in quota"},{"line_number":10,"context_line":"    and flavor access APIs. For details on supported options,"},{"line_number":11,"context_line":"    refer to the configuration reference."}],"source_content_type":"text/x-yaml","patch_set":12,"id":"7f287b81_8ddccb74","line":11,"updated":"2017-09-06 12:06:46.000000000","message":"I\u0027m concerned that this upgrade section doesn\u0027t really provide enough details here. Before, the administrator\u0027s credentials were used to check quota, which would often be sufficient.\n\nIn this new approach you need to put keystone admin creds in a config file, right? This concerns me.","commit_id":"d5441e7366567e9cfe119c79c84303f26c9e99f4"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"1f9592094e882f0b1288a35faff72ef017930cc6","unresolved":false,"context_lines":[{"line_number":8,"context_line":"    to existing ``glance`` and ``neutron`` config sections"},{"line_number":9,"context_line":"    and will be used for things like project_id validation in quota"},{"line_number":10,"context_line":"    and flavor access APIs. For details on supported options,"},{"line_number":11,"context_line":"    refer to the configuration reference."}],"source_content_type":"text/x-yaml","patch_set":12,"id":"7f287b81_0d4c5b9c","line":11,"in_reply_to":"7f287b81_8ddccb74","updated":"2017-09-06 15:28:09.000000000","message":"@sdague, No, this doesn\u0027t do anything with creds. The auth here is exactly as it was before. This is only about the session properties, e.g. whether to validate certificate, not the auth properties.\n\nAlso note that you don\u0027t have to do anything in the config. If you don\u0027t, I believe things should work exactly as they did before (use defaults). But now you *can* override defaults if you need to.\n\nAs for whether this release note gives enough details... I looked at previous release notes similar to this case, and this actually provides more/better info than they did. Doesn\u0027t mean it can\u0027t be improved of course...","commit_id":"d5441e7366567e9cfe119c79c84303f26c9e99f4"}]}
