)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"548b7a479c23fe7149f61465ea8e619b7c76f655","unresolved":false,"context_lines":[{"line_number":10,"context_line":"This is generally high level with this expectation that a developer"},{"line_number":11,"context_line":"could take the concepts found here and determine more from the module"},{"line_number":12,"context_line":"documentation."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I5e44c1029ce160cb2798cfb8a535aa9f3311799a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAW3%2F%2Fhgs%3D","line":13,"updated":"2014-04-14 00:32:51.000000000","message":"Does this need DocImpact ?","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"}],"doc/source/using-sessions.rst":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"688e1d8313617d7e491cc14fc753522bef5dca19","unresolved":false,"context_lines":[{"line_number":7,"context_line":""},{"line_number":8,"context_line":"The ``keystoneclient.session.Session`` object was introduced into"},{"line_number":9,"context_line":"keystoneclient as an attempt to bring a unified interface to the various"},{"line_number":10,"context_line":"openstack clients that share common authentication and request parameters"},{"line_number":11,"context_line":"between a variety of services."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The model for using a session and auth plugin as well as the general terms used"}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAW3%2F%2FiNg%3D","line":10,"updated":"2014-04-13 15:30:40.000000000","message":"capitalize OpenStack","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"67ee3184534375aa4ec6fe8e7722dfcd81f26ab3","unresolved":false,"context_lines":[{"line_number":8,"context_line":"The ``keystoneclient.session.Session`` object was introduced into"},{"line_number":9,"context_line":"keystoneclient as an attempt to bring a unified interface to the various"},{"line_number":10,"context_line":"openstack clients that share common authentication and request parameters"},{"line_number":11,"context_line":"between a variety of services."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The model for using a session and auth plugin as well as the general terms used"},{"line_number":14,"context_line":"have been heavily inspired by the requests library however it not inheritted"}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAWH%2F94MI%3D","line":11,"updated":"2014-04-11 11:53:28.000000000","message":"I\u0027d love to see this end with a sentence about who would care about a unified session object.","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"67ee3184534375aa4ec6fe8e7722dfcd81f26ab3","unresolved":false,"context_lines":[{"line_number":11,"context_line":"between a variety of services."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The model for using a session and auth plugin as well as the general terms used"},{"line_number":14,"context_line":"have been heavily inspired by the requests library however it not inheritted"},{"line_number":15,"context_line":"from the `requests \u003chttp://docs.python-requests.org\u003e`_ library. This means that"},{"line_number":16,"context_line":"authentication plugins are not based on the same mechanisms used by requests"},{"line_number":17,"context_line":"and control of requests concepts such as session management are not necessarily"}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAWH%2F94Hk%3D","line":14,"updated":"2014-04-11 11:53:28.000000000","message":"I think you need commas around \u0027however\u0027 and the fragment after probably needs a little rewording.","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"688e1d8313617d7e491cc14fc753522bef5dca19","unresolved":false,"context_lines":[{"line_number":11,"context_line":"between a variety of services."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The model for using a session and auth plugin as well as the general terms used"},{"line_number":14,"context_line":"have been heavily inspired by the requests library however it not inheritted"},{"line_number":15,"context_line":"from the `requests \u003chttp://docs.python-requests.org\u003e`_ library. This means that"},{"line_number":16,"context_line":"authentication plugins are not based on the same mechanisms used by requests"},{"line_number":17,"context_line":"and control of requests concepts such as session management are not necessarily"}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAW3%2F%2FiNc%3D","line":14,"updated":"2014-04-13 15:30:40.000000000","message":"change \"inheritted\" to \"inherited\"","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"688e1d8313617d7e491cc14fc753522bef5dca19","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The model for using a session and auth plugin as well as the general terms used"},{"line_number":14,"context_line":"have been heavily inspired by the requests library however it not inheritted"},{"line_number":15,"context_line":"from the `requests \u003chttp://docs.python-requests.org\u003e`_ library. This means that"},{"line_number":16,"context_line":"authentication plugins are not based on the same mechanisms used by requests"},{"line_number":17,"context_line":"and control of requests concepts such as session management are not necessarily"},{"line_number":18,"context_line":"accessible via the same interfaces as the requests library."}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAW3%2F%2FiNU%3D","line":15,"updated":"2014-04-13 15:30:40.000000000","message":"suggest make the first use of \"requests\" a link rather than this one.","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"67ee3184534375aa4ec6fe8e7722dfcd81f26ab3","unresolved":false,"context_lines":[{"line_number":14,"context_line":"have been heavily inspired by the requests library however it not inheritted"},{"line_number":15,"context_line":"from the `requests \u003chttp://docs.python-requests.org\u003e`_ library. This means that"},{"line_number":16,"context_line":"authentication plugins are not based on the same mechanisms used by requests"},{"line_number":17,"context_line":"and control of requests concepts such as session management are not necessarily"},{"line_number":18,"context_line":"accessible via the same interfaces as the requests library."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Features"}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAWH%2F93%2FM%3D","line":17,"updated":"2014-04-11 11:53:28.000000000","message":"This sentence didn\u0027t make sense the first time I read it. This can probably be simplified to something like: This means that while the interface may be similar they will definitely be different.","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"548b7a479c23fe7149f61465ea8e619b7c76f655","unresolved":false,"context_lines":[{"line_number":14,"context_line":"have been heavily inspired by the requests library however it not inheritted"},{"line_number":15,"context_line":"from the `requests \u003chttp://docs.python-requests.org\u003e`_ library. This means that"},{"line_number":16,"context_line":"authentication plugins are not based on the same mechanisms used by requests"},{"line_number":17,"context_line":"and control of requests concepts such as session management are not necessarily"},{"line_number":18,"context_line":"accessible via the same interfaces as the requests library."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Features"}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAW3%2F%2FhgY%3D","line":17,"in_reply_to":"AAAAWH%2F93%2FM%3D","updated":"2014-04-14 00:32:51.000000000","message":"++ please simplify this sentence.","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a09a73d69624cc1c67524ca67dd8cf9234ab6816","unresolved":false,"context_lines":[{"line_number":16,"context_line":"authentication plugins are not based on the same mechanisms used by requests"},{"line_number":17,"context_line":"and control of requests concepts such as session management are not necessarily"},{"line_number":18,"context_line":"accessible via the same interfaces as the requests library."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Features"},{"line_number":21,"context_line":"--------"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAXH%2F%2F1Nc%3D","line":19,"updated":"2014-04-17 05:28:24.000000000","message":"If we\u0027re calling out inspirations for naming and structure, it might be worth while to call out Keystone. Since now we are using terms like auth plugin. And the different auth methods should now be available in the client. It might be already obvious, just a thought.","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"67ee3184534375aa4ec6fe8e7722dfcd81f26ab3","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"- Common client authentication"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"  Authentication should be handled by one of a variety of authentication"},{"line_number":26,"context_line":"  plugins and then this authentication information will be shared between all"},{"line_number":27,"context_line":"  the services that use the same session object."},{"line_number":28,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAW3%2F%2F%2FL0%3D","line":25,"updated":"2014-04-11 11:53:28.000000000","message":"Maybe \u0027will be\u0027 instead of \u0027should be\u0027?","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"548b7a479c23fe7149f61465ea8e619b7c76f655","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"- Common client authentication"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"  Authentication should be handled by one of a variety of authentication"},{"line_number":26,"context_line":"  plugins and then this authentication information will be shared between all"},{"line_number":27,"context_line":"  the services that use the same session object."},{"line_number":28,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAW3%2F%2FhgQ%3D","line":25,"in_reply_to":"AAAAW3%2F%2F%2FL0%3D","updated":"2014-04-14 00:32:51.000000000","message":"I\u0027d go a step further and assert this is the way things are done:\n\n\"Authentication is handled by one of a variety ...\"","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"548b7a479c23fe7149f61465ea8e619b7c76f655","unresolved":false,"context_lines":[{"line_number":23,"context_line":"- Common client authentication"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"  Authentication should be handled by one of a variety of authentication"},{"line_number":26,"context_line":"  plugins and then this authentication information will be shared between all"},{"line_number":27,"context_line":"  the services that use the same session object."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"- Standard discovery mechanisms"}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAW3%2F%2FhgM%3D","line":26,"updated":"2014-04-14 00:32:51.000000000","message":"suggest: and the authentication information is shared between all the services that use the same session object","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"688e1d8313617d7e491cc14fc753522bef5dca19","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"- Standard discovery mechanisms"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"  Clients should not have to know how to parse the data returned in a keystone"},{"line_number":32,"context_line":"  service token and do version discovery before they are able to communicate."},{"line_number":33,"context_line":"  This process should be common."},{"line_number":34,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAW3%2F%2FiNM%3D","line":31,"updated":"2014-04-13 15:30:40.000000000","message":"change \"keystone\" to \"identity service\"","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"548b7a479c23fe7149f61465ea8e619b7c76f655","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"  Clients should not have to know how to parse the data returned in a keystone"},{"line_number":32,"context_line":"  service token and do version discovery before they are able to communicate."},{"line_number":33,"context_line":"  This process should be common."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"Sessions for Users"}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAW3%2F%2FhgA%3D","line":33,"updated":"2014-04-14 00:32:51.000000000","message":"Suggest being more assertive with this point, my suggestion is more of a starting place on the rewording:\n\nClients use a common mechanism to parse the data returned in a Identity Service token and to perform version discovery before communicating with OpenStack services.","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"548b7a479c23fe7149f61465ea8e619b7c76f655","unresolved":false,"context_lines":[{"line_number":36,"context_line":"Sessions for Users"},{"line_number":37,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"The session object should be seen as the contact point to your OpenStack cloud"},{"line_number":40,"context_line":"services. Your authentication credentials and connection information about your"},{"line_number":41,"context_line":"cloud such as available CA certificates will be stored here and re-used by"},{"line_number":42,"context_line":"other services. When creating services this session object is passed to the"}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAW3%2F%2Fhf0%3D","line":39,"updated":"2014-04-14 00:32:51.000000000","message":"Suggest replacing \"should be seen as\" with \"is\"","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"688e1d8313617d7e491cc14fc753522bef5dca19","unresolved":false,"context_lines":[{"line_number":37,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"The session object should be seen as the contact point to your OpenStack cloud"},{"line_number":40,"context_line":"services. Your authentication credentials and connection information about your"},{"line_number":41,"context_line":"cloud such as available CA certificates will be stored here and re-used by"},{"line_number":42,"context_line":"other services. When creating services this session object is passed to the"},{"line_number":43,"context_line":"client so that it may use this information."}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAW3%2F%2FiM8%3D","line":40,"updated":"2014-04-13 15:30:40.000000000","message":"Is this documenting how it\u0027s supposed to be or how it is now?","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"548b7a479c23fe7149f61465ea8e619b7c76f655","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"The session object should be seen as the contact point to your OpenStack cloud"},{"line_number":40,"context_line":"services. Your authentication credentials and connection information about your"},{"line_number":41,"context_line":"cloud such as available CA certificates will be stored here and re-used by"},{"line_number":42,"context_line":"other services. When creating services this session object is passed to the"},{"line_number":43,"context_line":"client so that it may use this information."},{"line_number":44,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAW3%2F%2Fhfw%3D","line":41,"updated":"2014-04-14 00:32:51.000000000","message":"Suggest reword to be assertive that this \"is the case\" not \"should be the case\"","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"548b7a479c23fe7149f61465ea8e619b7c76f655","unresolved":false,"context_lines":[{"line_number":42,"context_line":"other services. When creating services this session object is passed to the"},{"line_number":43,"context_line":"client so that it may use this information."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"A session does not authenticate immediately. When a request that requires"},{"line_number":46,"context_line":"authentication passes through the session the authentication plugin will be"},{"line_number":47,"context_line":"asked for a valid token. If a token is not available then the authentication"},{"line_number":48,"context_line":"plugin will then contact the authentication service and fetch a new token. If"}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAW3%2F%2Fhfc%3D","line":45,"updated":"2014-04-14 00:32:51.000000000","message":"(nit): \"A session authenticates on demand\" instead of \"does not authenticate immediately\".","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"688e1d8313617d7e491cc14fc753522bef5dca19","unresolved":false,"context_lines":[{"line_number":45,"context_line":"A session does not authenticate immediately. When a request that requires"},{"line_number":46,"context_line":"authentication passes through the session the authentication plugin will be"},{"line_number":47,"context_line":"asked for a valid token. If a token is not available then the authentication"},{"line_number":48,"context_line":"plugin will then contact the authentication service and fetch a new token. If"},{"line_number":49,"context_line":"the plugin contains a still valid token then this will be used."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"An example from keystoneclient::"}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAW3%2F%2FiM0%3D","line":48,"updated":"2014-04-13 15:30:40.000000000","message":"change \"will then\" to \"will\"","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"548b7a479c23fe7149f61465ea8e619b7c76f655","unresolved":false,"context_lines":[{"line_number":46,"context_line":"authentication passes through the session the authentication plugin will be"},{"line_number":47,"context_line":"asked for a valid token. If a token is not available then the authentication"},{"line_number":48,"context_line":"plugin will then contact the authentication service and fetch a new token. If"},{"line_number":49,"context_line":"the plugin contains a still valid token then this will be used."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"An example from keystoneclient::"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAW3%2F%2FhfE%3D","line":49,"updated":"2014-04-14 00:32:51.000000000","message":"The last sentence seems out of place, suggest ordering the operations in the order they occur: e.g. if a token exists use it, then if no token is available the authentication service is contacted .. etc.","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"688e1d8313617d7e491cc14fc753522bef5dca19","unresolved":false,"context_lines":[{"line_number":46,"context_line":"authentication passes through the session the authentication plugin will be"},{"line_number":47,"context_line":"asked for a valid token. If a token is not available then the authentication"},{"line_number":48,"context_line":"plugin will then contact the authentication service and fetch a new token. If"},{"line_number":49,"context_line":"the plugin contains a still valid token then this will be used."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"An example from keystoneclient::"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAW3%2F%2FiMw%3D","line":49,"updated":"2014-04-13 15:30:40.000000000","message":"change \"this\" to \"this token\"","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"688e1d8313617d7e491cc14fc753522bef5dca19","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"An example from keystoneclient::"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    \u003e\u003e\u003e from keystoneclient.auth.identity import v2"},{"line_number":54,"context_line":"    \u003e\u003e\u003e from keystoneclient import session"},{"line_number":55,"context_line":"    \u003e\u003e\u003e from keystoneclient.v2_0 import client"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAW3%2F%2FiNE%3D","line":53,"updated":"2014-04-13 15:30:40.000000000","message":"suggest don\u0027t prefix all these lines with \u003e\u003e\u003e\n\nwhy are we providing new examples with v2? I thought v2 was deprecated.","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a09a73d69624cc1c67524ca67dd8cf9234ab6816","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"An example from keystoneclient::"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    \u003e\u003e\u003e from keystoneclient.auth.identity import v2"},{"line_number":54,"context_line":"    \u003e\u003e\u003e from keystoneclient import session"},{"line_number":55,"context_line":"    \u003e\u003e\u003e from keystoneclient.v2_0 import client"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAXH%2F%2F1OM%3D","line":53,"in_reply_to":"AAAAW3%2F%2Fhe0%3D","updated":"2014-04-17 05:28:24.000000000","message":"I\u0027d rather see a v3 version of this, or even better, v3 and v2?","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"548b7a479c23fe7149f61465ea8e619b7c76f655","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"An example from keystoneclient::"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    \u003e\u003e\u003e from keystoneclient.auth.identity import v2"},{"line_number":54,"context_line":"    \u003e\u003e\u003e from keystoneclient import session"},{"line_number":55,"context_line":"    \u003e\u003e\u003e from keystoneclient.v2_0 import client"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAW3%2F%2Fhe0%3D","line":53,"in_reply_to":"AAAAW3%2F%2FiNE%3D","updated":"2014-04-14 00:32:51.000000000","message":"V2 isn\u0027t deprecated, more that the server side is \"frozen\" iirc.\n\n\u0027\u003e\u003e\u003e\u0027 is a standard (as i recall) for providing in-line code documentation, though I am unsure how RST friendly it is. Should this be a RST ..code-block or whatever the OS standard is?\n\n++ for providing a v3 version of this in lieu of the v2 if possible.","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"548b7a479c23fe7149f61465ea8e619b7c76f655","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    \u003e\u003e\u003e ks \u003d client.Client(session\u003dsess)"},{"line_number":64,"context_line":"    \u003e\u003e\u003e users \u003d ks.users.list()"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"As more clients accept this means of operating they will be created in a"},{"line_number":67,"context_line":"similar fashion by passing the session object to the client\u0027s constructor."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAW3%2F%2Fheo%3D","line":66,"updated":"2014-04-14 00:32:51.000000000","message":"Suggest rewording without the word \"more\" and rephrasing \"will be\" to something less describing the way it should work and more descriptive of how it does work using this new object.","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"688e1d8313617d7e491cc14fc753522bef5dca19","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    \u003e\u003e\u003e users \u003d ks.users.list()"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"As more clients accept this means of operating they will be created in a"},{"line_number":67,"context_line":"similar fashion by passing the session object to the client\u0027s constructor."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Notes for Migrating to Sessions"}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAW3%2F%2FiMo%3D","line":67,"updated":"2014-04-13 15:30:40.000000000","message":"change session to Session","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"548b7a479c23fe7149f61465ea8e619b7c76f655","unresolved":false,"context_lines":[{"line_number":71,"context_line":"-------------------------------"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Using a Session object is a new way of using clients and adoption of this"},{"line_number":74,"context_line":"method will depend on the various clients. To maintain compatibility with"},{"line_number":75,"context_line":"applications using older versions of the client library methods will still be"},{"line_number":76,"context_line":"available on the client object that may not work correctly with a session"},{"line_number":77,"context_line":"object. For example the ``authenticate()`` method on a keystoneclient object"}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAW3%2F%2Fheg%3D","line":74,"updated":"2014-04-14 00:32:51.000000000","message":"Suggest \"will depend\" changed to \"depends\"","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"688e1d8313617d7e491cc14fc753522bef5dca19","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Using a Session object is a new way of using clients and adoption of this"},{"line_number":74,"context_line":"method will depend on the various clients. To maintain compatibility with"},{"line_number":75,"context_line":"applications using older versions of the client library methods will still be"},{"line_number":76,"context_line":"available on the client object that may not work correctly with a session"},{"line_number":77,"context_line":"object. For example the ``authenticate()`` method on a keystoneclient object"},{"line_number":78,"context_line":"will no longer force the client to (re-)authenticate as this is now the job of"}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAW3%2F%2FiMk%3D","line":75,"updated":"2014-04-13 15:30:40.000000000","message":"add , after library","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"548b7a479c23fe7149f61465ea8e619b7c76f655","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Using a Session object is a new way of using clients and adoption of this"},{"line_number":74,"context_line":"method will depend on the various clients. To maintain compatibility with"},{"line_number":75,"context_line":"applications using older versions of the client library methods will still be"},{"line_number":76,"context_line":"available on the client object that may not work correctly with a session"},{"line_number":77,"context_line":"object. For example the ``authenticate()`` method on a keystoneclient object"},{"line_number":78,"context_line":"will no longer force the client to (re-)authenticate as this is now the job of"}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAW3%2F%2Fhec%3D","line":75,"in_reply_to":"AAAAW3%2F%2FiMk%3D","updated":"2014-04-14 00:32:51.000000000","message":"suggest \"will still be available\" to \"will still be needed\"","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"688e1d8313617d7e491cc14fc753522bef5dca19","unresolved":false,"context_lines":[{"line_number":74,"context_line":"method will depend on the various clients. To maintain compatibility with"},{"line_number":75,"context_line":"applications using older versions of the client library methods will still be"},{"line_number":76,"context_line":"available on the client object that may not work correctly with a session"},{"line_number":77,"context_line":"object. For example the ``authenticate()`` method on a keystoneclient object"},{"line_number":78,"context_line":"will no longer force the client to (re-)authenticate as this is now the job of"},{"line_number":79,"context_line":"the Session and authentication plugins however the method is still there."},{"line_number":80,"context_line":"Likewise parameters such as the ``user_id`` and ``auth_token`` are still"}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAW3%2F%2FiMg%3D","line":77,"updated":"2014-04-13 15:30:40.000000000","message":"what is a keystoneclient object?","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"688e1d8313617d7e491cc14fc753522bef5dca19","unresolved":false,"context_lines":[{"line_number":76,"context_line":"available on the client object that may not work correctly with a session"},{"line_number":77,"context_line":"object. For example the ``authenticate()`` method on a keystoneclient object"},{"line_number":78,"context_line":"will no longer force the client to (re-)authenticate as this is now the job of"},{"line_number":79,"context_line":"the Session and authentication plugins however the method is still there."},{"line_number":80,"context_line":"Likewise parameters such as the ``user_id`` and ``auth_token`` are still"},{"line_number":81,"context_line":"available but no longer return valid values when using Sessions."},{"line_number":82,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAW3%2F%2FiMU%3D","line":79,"updated":"2014-04-13 15:30:40.000000000","message":"put a ; after plugins","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"688e1d8313617d7e491cc14fc753522bef5dca19","unresolved":false,"context_lines":[{"line_number":78,"context_line":"will no longer force the client to (re-)authenticate as this is now the job of"},{"line_number":79,"context_line":"the Session and authentication plugins however the method is still there."},{"line_number":80,"context_line":"Likewise parameters such as the ``user_id`` and ``auth_token`` are still"},{"line_number":81,"context_line":"available but no longer return valid values when using Sessions."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"When converting an application to using a Session care should be taken to"},{"line_number":84,"context_line":"ensure that internals (even if public) of the client objects are not accessed"}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAW3%2F%2FiMQ%3D","line":81,"updated":"2014-04-13 15:30:40.000000000","message":"what do they return?","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a09a73d69624cc1c67524ca67dd8cf9234ab6816","unresolved":false,"context_lines":[{"line_number":80,"context_line":"Likewise parameters such as the ``user_id`` and ``auth_token`` are still"},{"line_number":81,"context_line":"available but no longer return valid values when using Sessions."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"When converting an application to using a Session care should be taken to"},{"line_number":84,"context_line":"ensure that internals (even if public) of the client objects are not accessed"},{"line_number":85,"context_line":"directly."},{"line_number":86,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAXH%2F%2F1M8%3D","line":83,"updated":"2014-04-17 05:28:24.000000000","message":"Session is capitalized here, and I think a few other spots (line 73). Mostly it\u0027s not capitalized, suggest keep it that way. But aim for consistency.","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"688e1d8313617d7e491cc14fc753522bef5dca19","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":"When converting an application to using a Session care should be taken to"},{"line_number":84,"context_line":"ensure that internals (even if public) of the client objects are not accessed"},{"line_number":85,"context_line":"directly."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Sharing Authentication Plugins"}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAW3%2F%2FiMM%3D","line":85,"updated":"2014-04-13 15:30:40.000000000","message":"can you provide an example?","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"548b7a479c23fe7149f61465ea8e619b7c76f655","unresolved":false,"context_lines":[{"line_number":88,"context_line":"Sharing Authentication Plugins"},{"line_number":89,"context_line":"------------------------------"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"A session can only hold one authentication plugin however there is nothing that"},{"line_number":92,"context_line":"specifically binds the authentication plugin to that session, so a new Session"},{"line_number":93,"context_line":"can be created with different connection parameters that reuses the existing"},{"line_number":94,"context_line":"authentication plugin::"}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAW3%2F%2Fhd0%3D","line":91,"updated":"2014-04-14 00:32:51.000000000","message":"suggest minor rephrasing to \"A session can only use\", not sure what a session \"holding\" a plugin is (seems like a phrase out of place).","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"548b7a479c23fe7149f61465ea8e619b7c76f655","unresolved":false,"context_lines":[{"line_number":89,"context_line":"------------------------------"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"A session can only hold one authentication plugin however there is nothing that"},{"line_number":92,"context_line":"specifically binds the authentication plugin to that session, so a new Session"},{"line_number":93,"context_line":"can be created with different connection parameters that reuses the existing"},{"line_number":94,"context_line":"authentication plugin::"},{"line_number":95,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAW3%2F%2Fhds%3D","line":92,"updated":"2014-04-14 00:32:51.000000000","message":"Replace the comma after session with a period and remove \"so\".","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"688e1d8313617d7e491cc14fc753522bef5dca19","unresolved":false,"context_lines":[{"line_number":93,"context_line":"can be created with different connection parameters that reuses the existing"},{"line_number":94,"context_line":"authentication plugin::"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    \u003e\u003e\u003e new_sess \u003d session.Session(auth\u003dsess.auth,"},{"line_number":97,"context_line":"                                   verify\u003d\u0027/path/to/different-cas.cert\u0027)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"So long as the authentication call is able succeed with either session object"}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAW3%2F%2FiMI%3D","line":96,"updated":"2014-04-13 15:30:40.000000000","message":"suggest remove \u003e\u003e\u003e from all these examples.","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"688e1d8313617d7e491cc14fc753522bef5dca19","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    \u003e\u003e\u003e new_sess \u003d session.Session(auth\u003dsess.auth,"},{"line_number":97,"context_line":"                                   verify\u003d\u0027/path/to/different-cas.cert\u0027)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"So long as the authentication call is able succeed with either session object"},{"line_number":100,"context_line":"the above ``new_sess`` will share the same token as the ``sess`` object"},{"line_number":101,"context_line":"including when the token is refreshed."},{"line_number":102,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAW3%2F%2FiME%3D","line":99,"updated":"2014-04-13 15:30:40.000000000","message":"change \"So\" to \"As\"","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a09a73d69624cc1c67524ca67dd8cf9234ab6816","unresolved":false,"context_lines":[{"line_number":104,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"Sessions are intended to take away much of the hassle of dealing with"},{"line_number":107,"context_line":"authentication data and token formats."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"Authentication"},{"line_number":110,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAXH%2F%2F1MI%3D","line":107,"updated":"2014-04-17 05:28:24.000000000","message":"I know the subsections will explain how this is resolved, but this part seems incomplete when reading. Can you explain how the issues are resolved (briefly)","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"688e1d8313617d7e491cc14fc753522bef5dca19","unresolved":false,"context_lines":[{"line_number":110,"context_line":"--------------"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"When making a request with a session object you can simply pass the keyword"},{"line_number":113,"context_line":"argument ``authenticated`` to indicate whether the argument should contain a"},{"line_number":114,"context_line":"token, by default a token is given if an authentication plugin is available::"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    \u003e\u003e\u003e # In keystone this route is unprotected by default"}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAW3%2F%2FiL8%3D","line":113,"updated":"2014-04-13 15:30:40.000000000","message":"argument?","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a09a73d69624cc1c67524ca67dd8cf9234ab6816","unresolved":false,"context_lines":[{"line_number":110,"context_line":"--------------"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"When making a request with a session object you can simply pass the keyword"},{"line_number":113,"context_line":"argument ``authenticated`` to indicate whether the argument should contain a"},{"line_number":114,"context_line":"token, by default a token is given if an authentication plugin is available::"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    \u003e\u003e\u003e # In keystone this route is unprotected by default"}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAXH%2F%2F1L8%3D","line":113,"in_reply_to":"AAAAW3%2F%2FiL8%3D","updated":"2014-04-17 05:28:24.000000000","message":"i think it\u0027s meant to be response?","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a09a73d69624cc1c67524ca67dd8cf9234ab6816","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"When making a request with a session object you can simply pass the keyword"},{"line_number":113,"context_line":"argument ``authenticated`` to indicate whether the argument should contain a"},{"line_number":114,"context_line":"token, by default a token is given if an authentication plugin is available::"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    \u003e\u003e\u003e # In keystone this route is unprotected by default"},{"line_number":117,"context_line":"    \u003e\u003e\u003e resp \u003d sess.get(\u0027https://my.keystone.com:5000/v2.0\u0027,"}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAXH%2F%2F1L0%3D","line":114,"updated":"2014-04-17 05:28:24.000000000","message":"s/given/included","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"688e1d8313617d7e491cc14fc753522bef5dca19","unresolved":false,"context_lines":[{"line_number":114,"context_line":"token, by default a token is given if an authentication plugin is available::"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    \u003e\u003e\u003e # In keystone this route is unprotected by default"},{"line_number":117,"context_line":"    \u003e\u003e\u003e resp \u003d sess.get(\u0027https://my.keystone.com:5000/v2.0\u0027,"},{"line_number":118,"context_line":"                        authenticated\u003dFalse)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAW3%2F%2FiL4%3D","line":117,"updated":"2014-04-13 15:30:40.000000000","message":"suggest use v3 for examples.","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"548b7a479c23fe7149f61465ea8e619b7c76f655","unresolved":false,"context_lines":[{"line_number":123,"context_line":""},{"line_number":124,"context_line":"In OpenStack the URLs of available services are distributed to the user as a"},{"line_number":125,"context_line":"part of the token they receive called the Service Catalog. Clients are"},{"line_number":126,"context_line":"expected to use the URLs from the Service Catalog rather than knowing the"},{"line_number":127,"context_line":"service URLs ahead of time."},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"In general a client should never need to know the full URL for the server that"}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAW3%2F%2FhdQ%3D","line":126,"updated":"2014-04-14 00:32:51.000000000","message":"maybe replace \"knowing\" with \"being provided\"","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"548b7a479c23fe7149f61465ea8e619b7c76f655","unresolved":false,"context_lines":[{"line_number":126,"context_line":"expected to use the URLs from the Service Catalog rather than knowing the"},{"line_number":127,"context_line":"service URLs ahead of time."},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"In general a client should never need to know the full URL for the server that"},{"line_number":130,"context_line":"they are communicating with, simply that it should send a request to a path"},{"line_number":131,"context_line":"belonging to the correct service."},{"line_number":132,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAW3%2F%2Fhc8%3D","line":129,"updated":"2014-04-14 00:32:51.000000000","message":"Suggest: In general a client does not need to know the full URL ...","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"688e1d8313617d7e491cc14fc753522bef5dca19","unresolved":false,"context_lines":[{"line_number":135,"context_line":"correct URL to which to send a request. When using this mode only the path for"},{"line_number":136,"context_line":"the request needs to be specified::"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    \u003e\u003e\u003e resp \u003d session.get(\u0027/v2.0/users\u0027,"},{"line_number":139,"context_line":"                           authenticated\u003dTrue,"},{"line_number":140,"context_line":"                           endpoint_filter\u003d{\u0027service_type\u0027: \u0027identity\u0027,"},{"line_number":141,"context_line":"                                            \u0027interface\u0027: \u0027public\u0027,"}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAW3%2F%2FiLo%3D","line":138,"updated":"2014-04-13 15:30:40.000000000","message":"use v3 in new examples.","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"688e1d8313617d7e491cc14fc753522bef5dca19","unresolved":false,"context_lines":[{"line_number":136,"context_line":"the request needs to be specified::"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    \u003e\u003e\u003e resp \u003d session.get(\u0027/v2.0/users\u0027,"},{"line_number":139,"context_line":"                           authenticated\u003dTrue,"},{"line_number":140,"context_line":"                           endpoint_filter\u003d{\u0027service_type\u0027: \u0027identity\u0027,"},{"line_number":141,"context_line":"                                            \u0027interface\u0027: \u0027public\u0027,"},{"line_number":142,"context_line":"                                            \u0027region_name\u0027: \u0027myregion\u0027})"}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAW3%2F%2FiLk%3D","line":139,"updated":"2014-04-13 15:30:40.000000000","message":"isn\u0027t this the default?","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a09a73d69624cc1c67524ca67dd8cf9234ab6816","unresolved":false,"context_lines":[{"line_number":147,"context_line":"- ``service_type``: the type of service. For example ``identity``, ``compute``,"},{"line_number":148,"context_line":"  ``volume`` or many other predefined identifiers."},{"line_number":149,"context_line":"- ``interface``: the network exposure the interface has. This will be one of:"},{"line_number":150,"context_line":"  - ``public``: An endpoint that is available to the wider internet or network."},{"line_number":151,"context_line":"  - ``internal``: An endpoint that is only accessible within the private network."},{"line_number":152,"context_line":"  - ``admin``: An endpoint to be used for administrative tasks."},{"line_number":153,"context_line":"- ``region_name``: the name of the region that the endpoint should reside in."}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAXH%2F%2F1Ks%3D","line":150,"updated":"2014-04-17 05:28:24.000000000","message":"public/internal/admin did not become indented, it all flowed into a single paragraph.","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a09a73d69624cc1c67524ca67dd8cf9234ab6816","unresolved":false,"context_lines":[{"line_number":150,"context_line":"  - ``public``: An endpoint that is available to the wider internet or network."},{"line_number":151,"context_line":"  - ``internal``: An endpoint that is only accessible within the private network."},{"line_number":152,"context_line":"  - ``admin``: An endpoint to be used for administrative tasks."},{"line_number":153,"context_line":"- ``region_name``: the name of the region that the endpoint should reside in."},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"The session object will determine the URL matching the filter and append to it"},{"line_number":156,"context_line":"the provided path and so create a valid request."}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAXH%2F%2F1Kg%3D","line":153,"updated":"2014-04-17 05:28:24.000000000","message":"... where the endpoint resides.","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"548b7a479c23fe7149f61465ea8e619b7c76f655","unresolved":false,"context_lines":[{"line_number":152,"context_line":"  - ``admin``: An endpoint to be used for administrative tasks."},{"line_number":153,"context_line":"- ``region_name``: the name of the region that the endpoint should reside in."},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"The session object will determine the URL matching the filter and append to it"},{"line_number":156,"context_line":"the provided path and so create a valid request."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"While authentication plugins will endeavour to maintain a consistent set or"}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAW3%2F%2Fhcs%3D","line":155,"updated":"2014-04-14 00:32:51.000000000","message":"suggest \"will determine\" to \"determines\"","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"688e1d8313617d7e491cc14fc753522bef5dca19","unresolved":false,"context_lines":[{"line_number":155,"context_line":"The session object will determine the URL matching the filter and append to it"},{"line_number":156,"context_line":"the provided path and so create a valid request."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"While authentication plugins will endeavour to maintain a consistent set or"},{"line_number":159,"context_line":"arguments for an ``endpoint_filter`` the concept of an authentication plugin is"},{"line_number":160,"context_line":"purposefully generic and a specific mechanism may not know how to interpret"},{"line_number":161,"context_line":"certain arguments and ignore them. For example the"}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAW3%2F%2FiLU%3D","line":158,"updated":"2014-04-13 15:30:40.000000000","message":"change \"set or\" to \"set of\"","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"688e1d8313617d7e491cc14fc753522bef5dca19","unresolved":false,"context_lines":[{"line_number":160,"context_line":"purposefully generic and a specific mechanism may not know how to interpret"},{"line_number":161,"context_line":"certain arguments and ignore them. For example the"},{"line_number":162,"context_line":"``keystone.auth.token_endpoint.Token`` plugin (which is generally used for"},{"line_number":163,"context_line":"testing) will always return the same endpoint regardless of the parameters to"},{"line_number":164,"context_line":"``endpoint_filter`` or a custom OpenStack authentication mechanism may not have"},{"line_number":165,"context_line":"the concept of multiple ``interface`` and choose to ignore that parameter."},{"line_number":166,"context_line":"There is some expectation on the user that they understand the limitations"}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAW3%2F%2FiLQ%3D","line":163,"updated":"2014-04-13 15:30:40.000000000","message":"testing what?","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"688e1d8313617d7e491cc14fc753522bef5dca19","unresolved":false,"context_lines":[{"line_number":162,"context_line":"``keystone.auth.token_endpoint.Token`` plugin (which is generally used for"},{"line_number":163,"context_line":"testing) will always return the same endpoint regardless of the parameters to"},{"line_number":164,"context_line":"``endpoint_filter`` or a custom OpenStack authentication mechanism may not have"},{"line_number":165,"context_line":"the concept of multiple ``interface`` and choose to ignore that parameter."},{"line_number":166,"context_line":"There is some expectation on the user that they understand the limitations"},{"line_number":167,"context_line":"of the authentication system they are using."}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAW3%2F%2FiLA%3D","line":165,"updated":"2014-04-13 15:30:40.000000000","message":"change \"``interface``\" to \"``interface``s\" (add s)","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"950573025ef8c9f95d6be2fbf44f23b9c5ae8c7a","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    ...                    password\u003d\u0027mypassword\u0027,"},{"line_number":65,"context_line":"    ...                    tenant_id\u003d\u0027mytenant\u0027)"},{"line_number":66,"context_line":"    \u003e\u003e\u003e sess \u003d session.Session(auth\u003dauth,"},{"line_number":67,"context_line":"    ...                        verify\u003d\u0027/path/to/ca.cert\u0027)"},{"line_number":68,"context_line":"    \u003e\u003e\u003e ks \u003d client.Client(session\u003dsess)"},{"line_number":69,"context_line":"    \u003e\u003e\u003e users \u003d ks.users.list()"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_ebda2f16","line":67,"updated":"2014-06-10 06:22:48.000000000","message":"do we need to document the session params?","commit_id":"8de55bdcb37994d7d34534fed8b65132961b8533"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"d9b34822b2db3001bb8c2519fe251602d3c808ab","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    ...                    password\u003d\u0027mypassword\u0027,"},{"line_number":65,"context_line":"    ...                    tenant_id\u003d\u0027mytenant\u0027)"},{"line_number":66,"context_line":"    \u003e\u003e\u003e sess \u003d session.Session(auth\u003dauth,"},{"line_number":67,"context_line":"    ...                        verify\u003d\u0027/path/to/ca.cert\u0027)"},{"line_number":68,"context_line":"    \u003e\u003e\u003e ks \u003d client.Client(session\u003dsess)"},{"line_number":69,"context_line":"    \u003e\u003e\u003e users \u003d ks.users.list()"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_d27c1fee","line":67,"in_reply_to":"1ae5cdf2_ebda2f16","updated":"2014-06-10 22:25:25.000000000","message":"I don\u0027t think that\u0027s sustainable here. Let\u0027s leave that in the API docs.","commit_id":"8de55bdcb37994d7d34534fed8b65132961b8533"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"950573025ef8c9f95d6be2fbf44f23b9c5ae8c7a","unresolved":false,"context_lines":[{"line_number":107,"context_line":""},{"line_number":108,"context_line":"In this case we cannot know which session object will be used when the plugin"},{"line_number":109,"context_line":"performs the authentication call so the command must be able to succeed with"},{"line_number":110,"context_line":"either."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"Sessions for Client Developers"},{"line_number":113,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_ab53c76a","line":110,"updated":"2014-06-10 06:22:48.000000000","message":"Sharing auth plugin would require it to be stateless. Otherwise, we may run into race conditions, especially if auth plugin is for multi-roundtrip authentication. If an auth plugin is stateful, it should not be shared.","commit_id":"8de55bdcb37994d7d34534fed8b65132961b8533"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"d9b34822b2db3001bb8c2519fe251602d3c808ab","unresolved":false,"context_lines":[{"line_number":107,"context_line":""},{"line_number":108,"context_line":"In this case we cannot know which session object will be used when the plugin"},{"line_number":109,"context_line":"performs the authentication call so the command must be able to succeed with"},{"line_number":110,"context_line":"either."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"Sessions for Client Developers"},{"line_number":113,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_326d4333","line":110,"in_reply_to":"1ae5cdf2_ab53c76a","updated":"2014-06-10 22:25:25.000000000","message":"An auth plugin is definitely stateful. Whether you run into race conditions is dependant on whether you are using threads. \n\nIf threads are a concern then we can put a lock on the fetch operation - but lets leave that for now.","commit_id":"8de55bdcb37994d7d34534fed8b65132961b8533"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"950573025ef8c9f95d6be2fbf44f23b9c5ae8c7a","unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    \u003e\u003e\u003e # In keystone this route is unprotected by default"},{"line_number":128,"context_line":"    \u003e\u003e\u003e resp \u003d sess.get(\u0027https://my.keystone.com:5000/v3\u0027,"},{"line_number":129,"context_line":"                        authenticated\u003dFalse)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"Service Discovery"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_eba94f25","line":129,"updated":"2014-06-10 06:22:48.000000000","message":"May want to mention that the session HTTP requests also accepts auth plugin override. If one is provided, it will be used instead of the auth plugin from session.","commit_id":"8de55bdcb37994d7d34534fed8b65132961b8533"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"d9b34822b2db3001bb8c2519fe251602d3c808ab","unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    \u003e\u003e\u003e # In keystone this route is unprotected by default"},{"line_number":128,"context_line":"    \u003e\u003e\u003e resp \u003d sess.get(\u0027https://my.keystone.com:5000/v3\u0027,"},{"line_number":129,"context_line":"                        authenticated\u003dFalse)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"Service Discovery"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_b2631319","line":129,"in_reply_to":"1ae5cdf2_eba94f25","updated":"2014-06-10 22:25:25.000000000","message":"Done, but above in the sharing section.","commit_id":"8de55bdcb37994d7d34534fed8b65132961b8533"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"950573025ef8c9f95d6be2fbf44f23b9c5ae8c7a","unresolved":false,"context_lines":[{"line_number":162,"context_line":"  - ``internal``: An endpoint that is only accessible within the private network."},{"line_number":163,"context_line":"  - ``admin``: An endpoint to be used for administrative tasks."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"- ``region_name``: the name of the region where the endpoint resides."},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"The session object determines the URL matching the filter and append to it"},{"line_number":168,"context_line":"the provided path and so create a valid request."}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_8b47eb76","line":165,"updated":"2014-06-10 06:22:48.000000000","message":"Also, may want to mention endpoint filter is a generic key-value pair filter. Besides the above, auth plugin have the discretion of doing addition filtering.","commit_id":"8de55bdcb37994d7d34534fed8b65132961b8533"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"d9b34822b2db3001bb8c2519fe251602d3c808ab","unresolved":false,"context_lines":[{"line_number":162,"context_line":"  - ``internal``: An endpoint that is only accessible within the private network."},{"line_number":163,"context_line":"  - ``admin``: An endpoint to be used for administrative tasks."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"- ``region_name``: the name of the region where the endpoint resides."},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"The session object determines the URL matching the filter and append to it"},{"line_number":168,"context_line":"the provided path and so create a valid request."}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_92e0d797","line":165,"in_reply_to":"1ae5cdf2_8b47eb76","updated":"2014-06-10 22:25:25.000000000","message":"Done","commit_id":"8de55bdcb37994d7d34534fed8b65132961b8533"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"950573025ef8c9f95d6be2fbf44f23b9c5ae8c7a","unresolved":false,"context_lines":[{"line_number":165,"context_line":"- ``region_name``: the name of the region where the endpoint resides."},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"The session object determines the URL matching the filter and append to it"},{"line_number":168,"context_line":"the provided path and so create a valid request."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"While authentication plugins will endeavour to maintain a consistent set of"},{"line_number":171,"context_line":"arguments for an ``endpoint_filter`` the concept of an authentication plugin is"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_cb1f336f","line":168,"updated":"2014-06-10 06:22:48.000000000","message":"If there are multiple endpoints match the filter criteria, the first match will be used.","commit_id":"8de55bdcb37994d7d34534fed8b65132961b8533"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"d9b34822b2db3001bb8c2519fe251602d3c808ab","unresolved":false,"context_lines":[{"line_number":165,"context_line":"- ``region_name``: the name of the region where the endpoint resides."},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"The session object determines the URL matching the filter and append to it"},{"line_number":168,"context_line":"the provided path and so create a valid request."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"While authentication plugins will endeavour to maintain a consistent set of"},{"line_number":171,"context_line":"arguments for an ``endpoint_filter`` the concept of an authentication plugin is"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_52fd6f3a","line":168,"in_reply_to":"1ae5cdf2_cb1f336f","updated":"2014-06-10 22:25:25.000000000","message":"Done","commit_id":"8de55bdcb37994d7d34534fed8b65132961b8533"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"fdec7c5929ed164b228d0c25cb3fb216e6075a0c","unresolved":false,"context_lines":[{"line_number":5,"context_line":"Introduction"},{"line_number":6,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"The ``keystoneclient.session.Session`` object was introduced into"},{"line_number":9,"context_line":"keystoneclient as an attempt to bring a unified interface to the various"},{"line_number":10,"context_line":"OpenStack clients that share common authentication and request parameters"},{"line_number":11,"context_line":"between a variety of services."}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_97c6bc66","line":8,"updated":"2014-06-12 19:20:32.000000000","message":"make ``keystoneclient.session.Session`` a reference :py:class:`keystoneclient.session.Session`\n\nchange \"object\" to \"class\" -- it\u0027s not a singleton","commit_id":"09e0319f42d24437eb93d451a6772f424c68efe2"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"2d010096d15f8e34b354806a42456923f2fdf4cf","unresolved":false,"context_lines":[{"line_number":5,"context_line":"Introduction"},{"line_number":6,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"The ``keystoneclient.session.Session`` object was introduced into"},{"line_number":9,"context_line":"keystoneclient as an attempt to bring a unified interface to the various"},{"line_number":10,"context_line":"OpenStack clients that share common authentication and request parameters"},{"line_number":11,"context_line":"between a variety of services."}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_98289f87","line":8,"in_reply_to":"1ae5cdf2_97c6bc66","updated":"2014-06-13 03:35:12.000000000","message":"Done","commit_id":"09e0319f42d24437eb93d451a6772f424c68efe2"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"fdec7c5929ed164b228d0c25cb3fb216e6075a0c","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The model for using a Session and auth plugin as well as the general terms used"},{"line_number":14,"context_line":"have been heavily inspired by the `requests \u003chttp://docs.python-requests.org\u003e`_"},{"line_number":15,"context_line":"library. However neither the Session object nor any of the authentication"},{"line_number":16,"context_line":"plugins rely directly on those concepts from the requests library so you should"},{"line_number":17,"context_line":"not expect a direct translation."},{"line_number":18,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_5797d447","line":15,"updated":"2014-06-12 19:20:32.000000000","message":"change \"object\" to \"class\"","commit_id":"09e0319f42d24437eb93d451a6772f424c68efe2"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"2d010096d15f8e34b354806a42456923f2fdf4cf","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The model for using a Session and auth plugin as well as the general terms used"},{"line_number":14,"context_line":"have been heavily inspired by the `requests \u003chttp://docs.python-requests.org\u003e`_"},{"line_number":15,"context_line":"library. However neither the Session object nor any of the authentication"},{"line_number":16,"context_line":"plugins rely directly on those concepts from the requests library so you should"},{"line_number":17,"context_line":"not expect a direct translation."},{"line_number":18,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_f821a39e","line":15,"in_reply_to":"1ae5cdf2_5797d447","updated":"2014-06-13 03:35:12.000000000","message":"Done","commit_id":"09e0319f42d24437eb93d451a6772f424c68efe2"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"fdec7c5929ed164b228d0c25cb3fb216e6075a0c","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"- Security maintenance"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"  Security code is maintained in one single place and reused between all"},{"line_number":31,"context_line":"  clients such that in the event of problems it can be fixed in a single"},{"line_number":32,"context_line":"  location."},{"line_number":33,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_979ddc68","line":30,"updated":"2014-06-12 19:20:32.000000000","message":"change \"one single\" to \"a single\" (or \"one\")","commit_id":"09e0319f42d24437eb93d451a6772f424c68efe2"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"2d010096d15f8e34b354806a42456923f2fdf4cf","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"- Security maintenance"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"  Security code is maintained in one single place and reused between all"},{"line_number":31,"context_line":"  clients such that in the event of problems it can be fixed in a single"},{"line_number":32,"context_line":"  location."},{"line_number":33,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_38378be4","line":30,"in_reply_to":"1ae5cdf2_979ddc68","updated":"2014-06-13 03:35:12.000000000","message":"Done","commit_id":"09e0319f42d24437eb93d451a6772f424c68efe2"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"fdec7c5929ed164b228d0c25cb3fb216e6075a0c","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"- Standard discovery mechanisms"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"  Clients are not expected to have any knowledge of a Keystone token or any"},{"line_number":37,"context_line":"  other form of identification credential. Service and endpoint discovery are"},{"line_number":38,"context_line":"  handled by the Session and plugins."},{"line_number":39,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_d78a041a","line":36,"updated":"2014-06-12 19:20:32.000000000","message":"change \"Keystone\" to \"Identity service\"","commit_id":"09e0319f42d24437eb93d451a6772f424c68efe2"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"2d010096d15f8e34b354806a42456923f2fdf4cf","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"- Standard discovery mechanisms"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"  Clients are not expected to have any knowledge of a Keystone token or any"},{"line_number":37,"context_line":"  other form of identification credential. Service and endpoint discovery are"},{"line_number":38,"context_line":"  handled by the Session and plugins."},{"line_number":39,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_782d938e","line":36,"in_reply_to":"1ae5cdf2_d78a041a","updated":"2014-06-13 03:35:12.000000000","message":"Done","commit_id":"09e0319f42d24437eb93d451a6772f424c68efe2"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"fdec7c5929ed164b228d0c25cb3fb216e6075a0c","unresolved":false,"context_lines":[{"line_number":51,"context_line":"authentication passes through the Session the authentication plugin will be"},{"line_number":52,"context_line":"asked for a valid token. If a valid token is available it will be used"},{"line_number":53,"context_line":"otherwise the authentication plugin will contact the authentication service and"},{"line_number":54,"context_line":"fetch a new one."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"An example from keystoneclient::"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_97ab1c74","line":54,"updated":"2014-06-12 19:20:32.000000000","message":"this depends on the plugin and not all plugins need to do this.","commit_id":"09e0319f42d24437eb93d451a6772f424c68efe2"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"2d010096d15f8e34b354806a42456923f2fdf4cf","unresolved":false,"context_lines":[{"line_number":51,"context_line":"authentication passes through the Session the authentication plugin will be"},{"line_number":52,"context_line":"asked for a valid token. If a valid token is available it will be used"},{"line_number":53,"context_line":"otherwise the authentication plugin will contact the authentication service and"},{"line_number":54,"context_line":"fetch a new one."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"An example from keystoneclient::"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_9876dfa2","line":54,"in_reply_to":"1ae5cdf2_97ab1c74","updated":"2014-06-13 03:35:12.000000000","message":"Done","commit_id":"09e0319f42d24437eb93d451a6772f424c68efe2"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"fdec7c5929ed164b228d0c25cb3fb216e6075a0c","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"An example from keystoneclient::"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    \u003e\u003e\u003e from keystoneclient.auth.identity import v2"},{"line_number":59,"context_line":"    \u003e\u003e\u003e from keystoneclient import session"},{"line_number":60,"context_line":"    \u003e\u003e\u003e from keystoneclient.v2_0 import client"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_1781ccfa","line":58,"updated":"2014-06-12 19:20:32.000000000","message":"shouldn\u0027t our examples use v3?","commit_id":"09e0319f42d24437eb93d451a6772f424c68efe2"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"2d010096d15f8e34b354806a42456923f2fdf4cf","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"An example from keystoneclient::"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    \u003e\u003e\u003e from keystoneclient.auth.identity import v2"},{"line_number":59,"context_line":"    \u003e\u003e\u003e from keystoneclient import session"},{"line_number":60,"context_line":"    \u003e\u003e\u003e from keystoneclient.v2_0 import client"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_b879db94","line":58,"in_reply_to":"1ae5cdf2_1781ccfa","updated":"2014-06-13 03:35:12.000000000","message":"Done","commit_id":"09e0319f42d24437eb93d451a6772f424c68efe2"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"fdec7c5929ed164b228d0c25cb3fb216e6075a0c","unresolved":false,"context_lines":[{"line_number":78,"context_line":"By using a session with a keystonclient Client we define that you have opted in"},{"line_number":79,"context_line":"to new behaviour defined by the session. For example authentication is now"},{"line_number":80,"context_line":"on-demand rather than on creation. To allow this change in behaviour there are"},{"line_number":81,"context_line":"a number of functions that have changed behaviour or are not longer available."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"For example the ``client.authenticate()`` command used to be able to always"},{"line_number":84,"context_line":"re-authenticate the current client and fetch a new token. As this is now"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_57cc346a","line":81,"updated":"2014-06-12 19:20:32.000000000","message":"change \"not longer\" to \"no longer\"","commit_id":"09e0319f42d24437eb93d451a6772f424c68efe2"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"2d010096d15f8e34b354806a42456923f2fdf4cf","unresolved":false,"context_lines":[{"line_number":78,"context_line":"By using a session with a keystonclient Client we define that you have opted in"},{"line_number":79,"context_line":"to new behaviour defined by the session. For example authentication is now"},{"line_number":80,"context_line":"on-demand rather than on creation. To allow this change in behaviour there are"},{"line_number":81,"context_line":"a number of functions that have changed behaviour or are not longer available."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"For example the ``client.authenticate()`` command used to be able to always"},{"line_number":84,"context_line":"re-authenticate the current client and fetch a new token. As this is now"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_d86ce7d2","line":81,"in_reply_to":"1ae5cdf2_57cc346a","updated":"2014-06-13 03:35:12.000000000","message":"Done","commit_id":"09e0319f42d24437eb93d451a6772f424c68efe2"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"fdec7c5929ed164b228d0c25cb3fb216e6075a0c","unresolved":false,"context_lines":[{"line_number":80,"context_line":"on-demand rather than on creation. To allow this change in behaviour there are"},{"line_number":81,"context_line":"a number of functions that have changed behaviour or are not longer available."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"For example the ``client.authenticate()`` command used to be able to always"},{"line_number":84,"context_line":"re-authenticate the current client and fetch a new token. As this is now"},{"line_number":85,"context_line":"controlled by the Session and not the client this has changed, however the"},{"line_number":86,"context_line":"function will still exist to provide compatibility with older clients."}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_77c77045","line":83,"updated":"2014-06-12 19:20:32.000000000","message":"make this a reference to the method.","commit_id":"09e0319f42d24437eb93d451a6772f424c68efe2"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"2d010096d15f8e34b354806a42456923f2fdf4cf","unresolved":false,"context_lines":[{"line_number":80,"context_line":"on-demand rather than on creation. To allow this change in behaviour there are"},{"line_number":81,"context_line":"a number of functions that have changed behaviour or are not longer available."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"For example the ``client.authenticate()`` command used to be able to always"},{"line_number":84,"context_line":"re-authenticate the current client and fetch a new token. As this is now"},{"line_number":85,"context_line":"controlled by the Session and not the client this has changed, however the"},{"line_number":86,"context_line":"function will still exist to provide compatibility with older clients."}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_18b1ef46","line":83,"in_reply_to":"1ae5cdf2_77c77045","updated":"2014-06-13 03:35:12.000000000","message":"Done","commit_id":"09e0319f42d24437eb93d451a6772f424c68efe2"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"fdec7c5929ed164b228d0c25cb3fb216e6075a0c","unresolved":false,"context_lines":[{"line_number":186,"context_line":"arguments for an ``endpoint_filter`` the concept of an authentication plugin is"},{"line_number":187,"context_line":"purposefully generic and a specific mechanism may not know how to interpret"},{"line_number":188,"context_line":"certain arguments and ignore them. For example the"},{"line_number":189,"context_line":"``keystone.auth.token_endpoint.Token`` plugin (which is used when you want to"},{"line_number":190,"context_line":"always use a specific endpoint and token combination) will always return the"},{"line_number":191,"context_line":"same endpoint regardless of the parameters to ``endpoint_filter`` or a custom"},{"line_number":192,"context_line":"OpenStack authentication mechanism may not have the concept of multiple"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_b719f8d2","line":189,"updated":"2014-06-12 19:20:32.000000000","message":"make ``keystone.auth.token_endpoint.Token`` a reference -- :py:class:`keystoneclient.auth.token_endpoint.Token`\n\nalso, change keystone to keystoneclient","commit_id":"09e0319f42d24437eb93d451a6772f424c68efe2"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"2d010096d15f8e34b354806a42456923f2fdf4cf","unresolved":false,"context_lines":[{"line_number":186,"context_line":"arguments for an ``endpoint_filter`` the concept of an authentication plugin is"},{"line_number":187,"context_line":"purposefully generic and a specific mechanism may not know how to interpret"},{"line_number":188,"context_line":"certain arguments and ignore them. For example the"},{"line_number":189,"context_line":"``keystone.auth.token_endpoint.Token`` plugin (which is used when you want to"},{"line_number":190,"context_line":"always use a specific endpoint and token combination) will always return the"},{"line_number":191,"context_line":"same endpoint regardless of the parameters to ``endpoint_filter`` or a custom"},{"line_number":192,"context_line":"OpenStack authentication mechanism may not have the concept of multiple"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_b8639baf","line":189,"in_reply_to":"1ae5cdf2_b719f8d2","updated":"2014-06-13 03:35:12.000000000","message":"Done","commit_id":"09e0319f42d24437eb93d451a6772f424c68efe2"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"ad522952635cc5fb0bc3a1652b0702d874b5005a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":2,"context_line":"Using Sessions"},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_6e5689cf","line":1,"updated":"2014-06-14 16:40:00.000000000","message":"missing license header","commit_id":"e4d795e6cc4864b1a0b2e4134f6efb23167049a6"}],"keystoneclient/auth/token_endpoint.py":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"67ee3184534375aa4ec6fe8e7722dfcd81f26ab3","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def get_token(self, session):"},{"line_number":29,"context_line":"        return self.token"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def get_endpoint(self, *args, **kwargs):"},{"line_number":32,"context_line":"        return self.endpoint"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F9qfc%3D","line":30,"updated":"2014-04-11 11:53:28.000000000","message":"Should this change be a part of a separate commit?","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"688e1d8313617d7e491cc14fc753522bef5dca19","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def get_token(self, session):"},{"line_number":29,"context_line":"        return self.token"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def get_endpoint(self, *args, **kwargs):"},{"line_number":32,"context_line":"        return self.endpoint"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAW3%2F%2FiK8%3D","line":30,"in_reply_to":"AAAAWH%2F9qfc%3D","updated":"2014-04-13 15:30:40.000000000","message":"revert the change to this file.","commit_id":"1f6b879b810353bc55d1a497a63347f02dc58638"}]}
