)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"b794898e7eb6a5b6862ed03d7a569aba4975cd1f","unresolved":false,"context_lines":[{"line_number":11,"context_line":"keystone v3 API."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I5a2d45d80ba712492717a75ac5901f5ca775daa4"},{"line_number":14,"context_line":"Deals-with-Bug: #1260527"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAATn%2F8ssM%3D","line":14,"updated":"2013-12-22 23:30:45.000000000","message":"That\u0027s not a thing: https://wiki.openstack.org/wiki/GitCommitMessages#Including_external_references","commit_id":"056ccf251bc5523da559d4262ca3cf957e87e1c7"},{"author":{"_account_id":8996,"name":"Florent Flament","email":"contact@florentflament.com","username":"florent"},"change_message_id":"d15fbe49fce6012197f7c314ba2f533335ac65e3","unresolved":false,"context_lines":[{"line_number":11,"context_line":"keystone v3 API."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I5a2d45d80ba712492717a75ac5901f5ca775daa4"},{"line_number":14,"context_line":"Deals-with-Bug: #1260527"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAATn%2F8r6I%3D","line":14,"in_reply_to":"AAAATn%2F8ssM%3D","updated":"2013-12-23 08:35:17.000000000","message":"Oh thanks, I only knew the Closes-Bug tag. I\u0027ll change that.","commit_id":"056ccf251bc5523da559d4262ca3cf957e87e1c7"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"16aa161461f09eaae9943fd8017b6d79ccca1f4a","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"docs/source/using-api.rst documents how to use the V2 API. This patch"},{"line_number":10,"context_line":"starts the equivalent documentation (using-api-v3.rst) about how to"},{"line_number":11,"context_line":"use keystone v3 API. Introduction and Authentication sections have"},{"line_number":12,"context_line":"been written."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I5a2d45d80ba712492717a75ac5901f5ca775daa4"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAAT3%2F%2F3EU%3D","line":11,"updated":"2013-12-30 01:18:38.000000000","message":"(nit) capitalize Keystone","commit_id":"6e615f48d1c8ecbe26aac7822943a3ecadda53d1"},{"author":{"_account_id":8996,"name":"Florent Flament","email":"contact@florentflament.com","username":"florent"},"change_message_id":"b6b73f359b77b13ac408426a87857a128489f829","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"docs/source/using-api.rst documents how to use the V2 API. This patch"},{"line_number":10,"context_line":"starts the equivalent documentation (using-api-v3.rst) about how to"},{"line_number":11,"context_line":"use keystone v3 API. Introduction and Authentication sections have"},{"line_number":12,"context_line":"been written."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I5a2d45d80ba712492717a75ac5901f5ca775daa4"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAAT3%2F%2F1oE%3D","line":11,"in_reply_to":"AAAAT3%2F%2F3EU%3D","updated":"2013-12-30 13:09:14.000000000","message":";)","commit_id":"6e615f48d1c8ecbe26aac7822943a3ecadda53d1"}],"doc/source/using-api-v3.rst":[{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"b794898e7eb6a5b6862ed03d7a569aba4975cd1f","unresolved":false,"context_lines":[{"line_number":28,"context_line":"``projects`` attribute of the ``Client`` class is a tenant manager::"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    \u003e\u003e\u003e from keystoneclient.v3 import client"},{"line_number":31,"context_line":"    \u003e\u003e\u003e keystone \u003d client.Client(...)"},{"line_number":32,"context_line":"    \u003e\u003e\u003e keystone.projects.list() # List projects"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"You create a valid ``keystoneclient.v3.client.Client`` object by"}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAATn%2F8ssE%3D","line":31,"updated":"2013-12-22 23:30:45.000000000","message":"I would *like* to tell people to use the discovery keystoneclient.client.Client() but i guess it makes sense to talk about the v3 here specifically.","commit_id":"056ccf251bc5523da559d4262ca3cf957e87e1c7"},{"author":{"_account_id":8996,"name":"Florent Flament","email":"contact@florentflament.com","username":"florent"},"change_message_id":"d15fbe49fce6012197f7c314ba2f533335ac65e3","unresolved":false,"context_lines":[{"line_number":28,"context_line":"``projects`` attribute of the ``Client`` class is a tenant manager::"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    \u003e\u003e\u003e from keystoneclient.v3 import client"},{"line_number":31,"context_line":"    \u003e\u003e\u003e keystone \u003d client.Client(...)"},{"line_number":32,"context_line":"    \u003e\u003e\u003e keystone.projects.list() # List projects"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"You create a valid ``keystoneclient.v3.client.Client`` object by"}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAATn%2F8r3s%3D","line":31,"in_reply_to":"AAAATn%2F8ssE%3D","updated":"2013-12-23 08:35:17.000000000","message":"Well, I planned to deal mostly with Keystone v3 API there. But I think we can add some extra information.. I\u0027ll try and add some info about the discovery (which I have to understand first), if not in this commit, in a future one.","commit_id":"056ccf251bc5523da559d4262ca3cf957e87e1c7"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"e7a6a7e7cfeb50e1541ce86c8d0d84d4a3782ac5","unresolved":false,"context_lines":[{"line_number":39,"context_line":"exception it will raise an instance of subclass of"},{"line_number":40,"context_line":"``keystoneclient.exceptions.ClientException``"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"ToBeContinued(florent)"}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAATn%2F8wZA%3D","line":42,"updated":"2013-12-20 17:00:09.000000000","message":"this is unnecessary and can be removed","commit_id":"056ccf251bc5523da559d4262ca3cf957e87e1c7"},{"author":{"_account_id":8996,"name":"Florent Flament","email":"contact@florentflament.com","username":"florent"},"change_message_id":"d15fbe49fce6012197f7c314ba2f533335ac65e3","unresolved":false,"context_lines":[{"line_number":39,"context_line":"exception it will raise an instance of subclass of"},{"line_number":40,"context_line":"``keystoneclient.exceptions.ClientException``"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"ToBeContinued(florent)"}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAATn%2F8r50%3D","line":42,"in_reply_to":"AAAATn%2F8ssI%3D","updated":"2013-12-23 08:35:17.000000000","message":"Ok guys, I agree with you. This will be removed.","commit_id":"056ccf251bc5523da559d4262ca3cf957e87e1c7"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"b794898e7eb6a5b6862ed03d7a569aba4975cd1f","unresolved":false,"context_lines":[{"line_number":39,"context_line":"exception it will raise an instance of subclass of"},{"line_number":40,"context_line":"``keystoneclient.exceptions.ClientException``"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"ToBeContinued(florent)"}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAATn%2F8ssI%3D","line":42,"in_reply_to":"AAAATn%2F8wZA%3D","updated":"2013-12-22 23:30:45.000000000","message":"Agreed, feel free to submit this in parts that build upon what is existing. Always having something is better than nothing.","commit_id":"056ccf251bc5523da559d4262ca3cf957e87e1c7"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"16aa161461f09eaae9943fd8017b6d79ccca1f4a","unresolved":false,"context_lines":[{"line_number":18,"context_line":" * trusts"},{"line_number":19,"context_line":" * users"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"The Identity v3 API lets you query and make changes through"},{"line_number":22,"context_line":"managers. For example, to manipulate a project (formerly called"},{"line_number":23,"context_line":"tenant), you interact with a"},{"line_number":24,"context_line":"``keystoneclient.v3.projects.ProjectManager`` object."}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAT3%2F%2F3D8%3D","line":21,"updated":"2013-12-30 01:18:38.000000000","message":"The Identity API doesn\u0027t let you do these things. The keystoneclient.v3.client API does.","commit_id":"6e615f48d1c8ecbe26aac7822943a3ecadda53d1"},{"author":{"_account_id":8996,"name":"Florent Flament","email":"contact@florentflament.com","username":"florent"},"change_message_id":"553a1d8d21de8a70be5b13b8f84319ee74d14149","unresolved":false,"context_lines":[{"line_number":18,"context_line":" * trusts"},{"line_number":19,"context_line":" * users"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"The Identity v3 API lets you query and make changes through"},{"line_number":22,"context_line":"managers. For example, to manipulate a project (formerly called"},{"line_number":23,"context_line":"tenant), you interact with a"},{"line_number":24,"context_line":"``keystoneclient.v3.projects.ProjectManager`` object."}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAT3%2F%2F2IE%3D","line":21,"in_reply_to":"AAAAT3%2F%2F3D8%3D","updated":"2013-12-30 10:19:51.000000000","message":"Right","commit_id":"6e615f48d1c8ecbe26aac7822943a3ecadda53d1"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"16aa161461f09eaae9943fd8017b6d79ccca1f4a","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    \u003e\u003e\u003e from keystoneclient import client"},{"line_number":42,"context_line":"    \u003e\u003e\u003e keystone \u003d"},{"line_number":43,"context_line":"    ...     client.Client(auth_url\u003d\"http://localhost:5000/v2.0\u0027, ...)"},{"line_number":44,"context_line":"    \u003e\u003e\u003e type(keystone)"},{"line_number":45,"context_line":"    \u003cclass \u0027keystoneclient.v2_0.client.Client\u0027\u003e"},{"line_number":46,"context_line":"    \u003e\u003e\u003e keystone \u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAT3%2F%2F3DE%3D","line":43,"updated":"2013-12-30 01:18:38.000000000","message":"change \" to \u0027","commit_id":"6e615f48d1c8ecbe26aac7822943a3ecadda53d1"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"16aa161461f09eaae9943fd8017b6d79ccca1f4a","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    \u003e\u003e\u003e type(keystone)"},{"line_number":45,"context_line":"    \u003cclass \u0027keystoneclient.v2_0.client.Client\u0027\u003e"},{"line_number":46,"context_line":"    \u003e\u003e\u003e keystone \u003d"},{"line_number":47,"context_line":"    ...     client.Client(auth_url\u003d\"http://localhost:5000/v3\u0027, ...)"},{"line_number":48,"context_line":"    \u003e\u003e\u003e type(keystone)"},{"line_number":49,"context_line":"    \u003cclass \u0027keystoneclient.v3.client.Client\u0027\u003e"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAT3%2F%2F3DA%3D","line":47,"updated":"2013-12-30 01:18:38.000000000","message":"change \" to \u0027","commit_id":"6e615f48d1c8ecbe26aac7822943a3ecadda53d1"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"16aa161461f09eaae9943fd8017b6d79ccca1f4a","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    \u003e\u003e\u003e keystone \u003d"},{"line_number":47,"context_line":"    ...     client.Client(auth_url\u003d\"http://localhost:5000/v3\u0027, ...)"},{"line_number":48,"context_line":"    \u003e\u003e\u003e type(keystone)"},{"line_number":49,"context_line":"    \u003cclass \u0027keystoneclient.v3.client.Client\u0027\u003e"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"A ``keystoneclient.v3.client.Client`` object is created by passing"},{"line_number":52,"context_line":"valid authentication data to the constructor. Authentication and"}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAT3%2F%2F3Dc%3D","line":49,"updated":"2013-12-30 01:18:38.000000000","message":"there should also be an example where auth_url doesn\u0027t have the version.\n\n client.Client(auth_url\u003d\"http://localhost:5000/\u0027, ...)","commit_id":"6e615f48d1c8ecbe26aac7822943a3ecadda53d1"},{"author":{"_account_id":8996,"name":"Florent Flament","email":"contact@florentflament.com","username":"florent"},"change_message_id":"553a1d8d21de8a70be5b13b8f84319ee74d14149","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    \u003e\u003e\u003e keystone \u003d"},{"line_number":47,"context_line":"    ...     client.Client(auth_url\u003d\"http://localhost:5000/v3\u0027, ...)"},{"line_number":48,"context_line":"    \u003e\u003e\u003e type(keystone)"},{"line_number":49,"context_line":"    \u003cclass \u0027keystoneclient.v3.client.Client\u0027\u003e"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"A ``keystoneclient.v3.client.Client`` object is created by passing"},{"line_number":52,"context_line":"valid authentication data to the constructor. Authentication and"}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAT3%2F%2F2AY%3D","line":49,"in_reply_to":"AAAAT3%2F%2F3Dc%3D","updated":"2013-12-30 10:19:51.000000000","message":"Nice, I didn\u0027t know this feature. I\u0027ll document on that.","commit_id":"6e615f48d1c8ecbe26aac7822943a3ecadda53d1"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"16aa161461f09eaae9943fd8017b6d79ccca1f4a","unresolved":false,"context_lines":[{"line_number":60,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"There are two ways to authenticate against Keystone:"},{"line_number":63,"context_line":" * with the admin token"},{"line_number":64,"context_line":" * with a user ID (or a username together with its user domain name)"},{"line_number":65,"context_line":"   and a password"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAT3%2F%2F3Co%3D","line":63,"updated":"2013-12-30 01:18:38.000000000","message":"should add a note that this is only useful for initial configuration.","commit_id":"6e615f48d1c8ecbe26aac7822943a3ecadda53d1"},{"author":{"_account_id":8996,"name":"Florent Flament","email":"contact@florentflament.com","username":"florent"},"change_message_id":"553a1d8d21de8a70be5b13b8f84319ee74d14149","unresolved":false,"context_lines":[{"line_number":60,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"There are two ways to authenticate against Keystone:"},{"line_number":63,"context_line":" * with the admin token"},{"line_number":64,"context_line":" * with a user ID (or a username together with its user domain name)"},{"line_number":65,"context_line":"   and a password"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAT3%2F%2F19Q%3D","line":63,"in_reply_to":"AAAAT3%2F%2F3Co%3D","updated":"2013-12-30 10:19:51.000000000","message":"Fair enough","commit_id":"6e615f48d1c8ecbe26aac7822943a3ecadda53d1"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"16aa161461f09eaae9943fd8017b6d79ccca1f4a","unresolved":false,"context_lines":[{"line_number":62,"context_line":"There are two ways to authenticate against Keystone:"},{"line_number":63,"context_line":" * with the admin token"},{"line_number":64,"context_line":" * with a user ID (or a username together with its user domain name)"},{"line_number":65,"context_line":"   and a password"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Note that with the v2 API, only the admin endpoint could be used to"},{"line_number":68,"context_line":"authenticate with the admin token. There is not such restriction with"}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAT3%2F%2F3Cc%3D","line":65,"updated":"2013-12-30 01:18:38.000000000","message":"there\u0027s actually many more ways to authenticate against Keystone. Also, with authentication plugins you can add your own methods. So this paragraph is not accurate.","commit_id":"6e615f48d1c8ecbe26aac7822943a3ecadda53d1"},{"author":{"_account_id":8996,"name":"Florent Flament","email":"contact@florentflament.com","username":"florent"},"change_message_id":"553a1d8d21de8a70be5b13b8f84319ee74d14149","unresolved":false,"context_lines":[{"line_number":62,"context_line":"There are two ways to authenticate against Keystone:"},{"line_number":63,"context_line":" * with the admin token"},{"line_number":64,"context_line":" * with a user ID (or a username together with its user domain name)"},{"line_number":65,"context_line":"   and a password"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Note that with the v2 API, only the admin endpoint could be used to"},{"line_number":68,"context_line":"authenticate with the admin token. There is not such restriction with"}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAT3%2F%2F19E%3D","line":65,"in_reply_to":"AAAAT3%2F%2F3Cc%3D","updated":"2013-12-30 10:19:51.000000000","message":"Ok, I\u0027ll update that part too. Still mostly focusing on the \"password\" authentication method.","commit_id":"6e615f48d1c8ecbe26aac7822943a3ecadda53d1"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"16aa161461f09eaae9943fd8017b6d79ccca1f4a","unresolved":false,"context_lines":[{"line_number":68,"context_line":"authenticate with the admin token. There is not such restriction with"},{"line_number":69,"context_line":"Keystone v3 API."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"If you are an administrator, you can authenticate by using the admin"},{"line_number":72,"context_line":"token (sometimes referred to as the service token). The token is"},{"line_number":73,"context_line":"specified as the ``admin_token`` configuration option in your"},{"line_number":74,"context_line":"keystone.conf config file, which is typically in /etc/keystone::"}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAT3%2F%2F3CQ%3D","line":71,"updated":"2013-12-30 01:18:38.000000000","message":"we shouldn\u0027t even document using the admin token.\n\nThis actually applies to any token you might have.","commit_id":"6e615f48d1c8ecbe26aac7822943a3ecadda53d1"},{"author":{"_account_id":8996,"name":"Florent Flament","email":"contact@florentflament.com","username":"florent"},"change_message_id":"553a1d8d21de8a70be5b13b8f84319ee74d14149","unresolved":false,"context_lines":[{"line_number":68,"context_line":"authenticate with the admin token. There is not such restriction with"},{"line_number":69,"context_line":"Keystone v3 API."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"If you are an administrator, you can authenticate by using the admin"},{"line_number":72,"context_line":"token (sometimes referred to as the service token). The token is"},{"line_number":73,"context_line":"specified as the ``admin_token`` configuration option in your"},{"line_number":74,"context_line":"keystone.conf config file, which is typically in /etc/keystone::"}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAT3%2F%2F188%3D","line":71,"in_reply_to":"AAAAT3%2F%2F3CQ%3D","updated":"2013-12-30 10:19:51.000000000","message":"Ok","commit_id":"6e615f48d1c8ecbe26aac7822943a3ecadda53d1"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a7b8ab6b75c7c1b090e26bd3d26ea8f9c64bda07","unresolved":false,"context_lines":[{"line_number":19,"context_line":" * users"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"The keystoneclient.v3.client API lets you query and make changes"},{"line_number":22,"context_line":"through managers. For example, to manipulate a project (formerly"},{"line_number":23,"context_line":"called tenant), you interact with a"},{"line_number":24,"context_line":"``keystoneclient.v3.projects.ProjectManager`` object."},{"line_number":25,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"AAAAT3%2F%2F0UM%3D","line":22,"updated":"2013-12-30 22:04:19.000000000","message":"suggest put \"managers\" in quotes.","commit_id":"0413d9734473561fda50cfdff09a1c20c20e9346"},{"author":{"_account_id":8996,"name":"Florent Flament","email":"contact@florentflament.com","username":"florent"},"change_message_id":"5d0d8389bc77f03f588ef6ee5e5b19361352ce41","unresolved":false,"context_lines":[{"line_number":19,"context_line":" * users"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"The keystoneclient.v3.client API lets you query and make changes"},{"line_number":22,"context_line":"through managers. For example, to manipulate a project (formerly"},{"line_number":23,"context_line":"called tenant), you interact with a"},{"line_number":24,"context_line":"``keystoneclient.v3.projects.ProjectManager`` object."},{"line_number":25,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"AAAAT3%2F%2FzCc%3D","line":22,"in_reply_to":"AAAAT3%2F%2F0UM%3D","updated":"2013-12-31 10:45:57.000000000","message":"agree, \"keystoneclient.v3.client\" too btw.","commit_id":"0413d9734473561fda50cfdff09a1c20c20e9346"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a7b8ab6b75c7c1b090e26bd3d26ea8f9c64bda07","unresolved":false,"context_lines":[{"line_number":34,"context_line":"While it is possible to instantiate a"},{"line_number":35,"context_line":"``keystoneclient.v3.client.Client`` object (as done above for"},{"line_number":36,"context_line":"clarity), the recommended approach is to use the discovery mechanism"},{"line_number":37,"context_line":"provided by using the ``keystone.client.Client`` class. The"},{"line_number":38,"context_line":"appropriate class will be instantiated depending on the API versions"},{"line_number":39,"context_line":"available::"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"AAAAT3%2F%2F0UA%3D","line":37,"updated":"2013-12-30 22:04:19.000000000","message":"remove \"using\"","commit_id":"0413d9734473561fda50cfdff09a1c20c20e9346"},{"author":{"_account_id":8996,"name":"Florent Flament","email":"contact@florentflament.com","username":"florent"},"change_message_id":"5d0d8389bc77f03f588ef6ee5e5b19361352ce41","unresolved":false,"context_lines":[{"line_number":34,"context_line":"While it is possible to instantiate a"},{"line_number":35,"context_line":"``keystoneclient.v3.client.Client`` object (as done above for"},{"line_number":36,"context_line":"clarity), the recommended approach is to use the discovery mechanism"},{"line_number":37,"context_line":"provided by using the ``keystone.client.Client`` class. The"},{"line_number":38,"context_line":"appropriate class will be instantiated depending on the API versions"},{"line_number":39,"context_line":"available::"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"AAAAT3%2F%2FzCY%3D","line":37,"in_reply_to":"AAAAT3%2F%2F0UA%3D","updated":"2013-12-31 10:45:57.000000000","message":"true","commit_id":"0413d9734473561fda50cfdff09a1c20c20e9346"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a7b8ab6b75c7c1b090e26bd3d26ea8f9c64bda07","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    \u003cclass \u0027keystoneclient.v3.client.Client\u0027\u003e"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"One can force the use of a specific version of the API, either by"},{"line_number":48,"context_line":"using the version keyword argument::"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    \u003e\u003e\u003e from keystoneclient import client"},{"line_number":51,"context_line":"    \u003e\u003e\u003e keystone \u003d client.Client(auth_url\u003d\u0027http://localhost:5000\u0027,"}],"source_content_type":"text/x-rst","patch_set":7,"id":"AAAAT3%2F%2F0Tk%3D","line":48,"updated":"2013-12-30 22:04:19.000000000","message":"change \"version\" to \"``version``\"","commit_id":"0413d9734473561fda50cfdff09a1c20c20e9346"},{"author":{"_account_id":8996,"name":"Florent Flament","email":"contact@florentflament.com","username":"florent"},"change_message_id":"5d0d8389bc77f03f588ef6ee5e5b19361352ce41","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    \u003cclass \u0027keystoneclient.v3.client.Client\u0027\u003e"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"One can force the use of a specific version of the API, either by"},{"line_number":48,"context_line":"using the version keyword argument::"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    \u003e\u003e\u003e from keystoneclient import client"},{"line_number":51,"context_line":"    \u003e\u003e\u003e keystone \u003d client.Client(auth_url\u003d\u0027http://localhost:5000\u0027,"}],"source_content_type":"text/x-rst","patch_set":7,"id":"AAAAT3%2F%2FzCU%3D","line":48,"in_reply_to":"AAAAT3%2F%2F0Tk%3D","updated":"2013-12-31 10:45:57.000000000","message":"agree","commit_id":"0413d9734473561fda50cfdff09a1c20c20e9346"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a7b8ab6b75c7c1b090e26bd3d26ea8f9c64bda07","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    \u003e\u003e\u003e from keystoneclient import client"},{"line_number":51,"context_line":"    \u003e\u003e\u003e keystone \u003d client.Client(auth_url\u003d\u0027http://localhost:5000\u0027,"},{"line_number":52,"context_line":"                                 version\u003d\u00272.0\u0027, ...)"},{"line_number":53,"context_line":"    \u003e\u003e\u003e type(keystone)"},{"line_number":54,"context_line":"    \u003cclass \u0027keystoneclient.v2_0.client.Client\u0027\u003e"},{"line_number":55,"context_line":"    \u003e\u003e\u003e keystone \u003d client.Client(auth_url\u003d\u0027http://localhost:5000\u0027,"}],"source_content_type":"text/x-rst","patch_set":7,"id":"AAAAT3%2F%2F0T0%3D","line":52,"updated":"2013-12-30 22:04:19.000000000","message":"version should be a tuple as documented... I\u0027d suggest use (2,) for version 2.","commit_id":"0413d9734473561fda50cfdff09a1c20c20e9346"},{"author":{"_account_id":8996,"name":"Florent Flament","email":"contact@florentflament.com","username":"florent"},"change_message_id":"5d0d8389bc77f03f588ef6ee5e5b19361352ce41","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    \u003e\u003e\u003e from keystoneclient import client"},{"line_number":51,"context_line":"    \u003e\u003e\u003e keystone \u003d client.Client(auth_url\u003d\u0027http://localhost:5000\u0027,"},{"line_number":52,"context_line":"                                 version\u003d\u00272.0\u0027, ...)"},{"line_number":53,"context_line":"    \u003e\u003e\u003e type(keystone)"},{"line_number":54,"context_line":"    \u003cclass \u0027keystoneclient.v2_0.client.Client\u0027\u003e"},{"line_number":55,"context_line":"    \u003e\u003e\u003e keystone \u003d client.Client(auth_url\u003d\u0027http://localhost:5000\u0027,"}],"source_content_type":"text/x-rst","patch_set":7,"id":"AAAAT3%2F%2FzB4%3D","line":52,"in_reply_to":"AAAAT3%2F%2F0T0%3D","updated":"2013-12-31 10:45:57.000000000","message":"agree","commit_id":"0413d9734473561fda50cfdff09a1c20c20e9346"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a7b8ab6b75c7c1b090e26bd3d26ea8f9c64bda07","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    \u003e\u003e\u003e type(keystone)"},{"line_number":54,"context_line":"    \u003cclass \u0027keystoneclient.v2_0.client.Client\u0027\u003e"},{"line_number":55,"context_line":"    \u003e\u003e\u003e keystone \u003d client.Client(auth_url\u003d\u0027http://localhost:5000\u0027,"},{"line_number":56,"context_line":"                                 version\u003d\u00273.0\u0027, ...)"},{"line_number":57,"context_line":"    \u003e\u003e\u003e type(keystone)"},{"line_number":58,"context_line":"    \u003cclass \u0027keystoneclient.v3.client.Client\u0027\u003e"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"AAAAT3%2F%2F0Tw%3D","line":56,"updated":"2013-12-30 22:04:19.000000000","message":"version should be a tuple as documented... I\u0027d suggest use (3,) for version 3.","commit_id":"0413d9734473561fda50cfdff09a1c20c20e9346"},{"author":{"_account_id":8996,"name":"Florent Flament","email":"contact@florentflament.com","username":"florent"},"change_message_id":"5d0d8389bc77f03f588ef6ee5e5b19361352ce41","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    \u003e\u003e\u003e type(keystone)"},{"line_number":54,"context_line":"    \u003cclass \u0027keystoneclient.v2_0.client.Client\u0027\u003e"},{"line_number":55,"context_line":"    \u003e\u003e\u003e keystone \u003d client.Client(auth_url\u003d\u0027http://localhost:5000\u0027,"},{"line_number":56,"context_line":"                                 version\u003d\u00273.0\u0027, ...)"},{"line_number":57,"context_line":"    \u003e\u003e\u003e type(keystone)"},{"line_number":58,"context_line":"    \u003cclass \u0027keystoneclient.v3.client.Client\u0027\u003e"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"AAAAT3%2F%2FzB8%3D","line":56,"in_reply_to":"AAAAT3%2F%2F0Tw%3D","updated":"2013-12-31 10:45:57.000000000","message":"agree","commit_id":"0413d9734473561fda50cfdff09a1c20c20e9346"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a7b8ab6b75c7c1b090e26bd3d26ea8f9c64bda07","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    \u003cclass \u0027keystoneclient.v3.client.Client\u0027\u003e"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Upon successful authentication, a ``keystoneclient.v3.client.Client``"},{"line_number":74,"context_line":"object is returned (when using Keystone\u0027s v3 API). Authentication and"},{"line_number":75,"context_line":"examples of common tasks are provided below."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"You can generally expect that when the client needs to propagate an"}],"source_content_type":"text/x-rst","patch_set":7,"id":"AAAAT3%2F%2F0Ss%3D","line":74,"updated":"2013-12-30 22:04:19.000000000","message":"change \"Keystone\u0027s v3 API\" to \"the Identity v3 API\"","commit_id":"0413d9734473561fda50cfdff09a1c20c20e9346"},{"author":{"_account_id":8996,"name":"Florent Flament","email":"contact@florentflament.com","username":"florent"},"change_message_id":"5d0d8389bc77f03f588ef6ee5e5b19361352ce41","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    \u003cclass \u0027keystoneclient.v3.client.Client\u0027\u003e"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Upon successful authentication, a ``keystoneclient.v3.client.Client``"},{"line_number":74,"context_line":"object is returned (when using Keystone\u0027s v3 API). Authentication and"},{"line_number":75,"context_line":"examples of common tasks are provided below."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"You can generally expect that when the client needs to propagate an"}],"source_content_type":"text/x-rst","patch_set":7,"id":"AAAAT3%2F%2FzCE%3D","line":74,"in_reply_to":"AAAAT3%2F%2F0Ss%3D","updated":"2013-12-31 10:45:57.000000000","message":"ok","commit_id":"0413d9734473561fda50cfdff09a1c20c20e9346"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a7b8ab6b75c7c1b090e26bd3d26ea8f9c64bda07","unresolved":false,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":"During the initial configuration phase, the admin token (sometimes"},{"line_number":85,"context_line":"referred to as the service token) specified as the ``admin_token`` in"},{"line_number":86,"context_line":"the keystone.conf config file (typically in /etc/keystone) is used."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Thanks to the authentication plugins mechanism, many ways are"},{"line_number":89,"context_line":"available to authenticate against Keystone."}],"source_content_type":"text/x-rst","patch_set":7,"id":"AAAAT3%2F%2F0SU%3D","line":86,"updated":"2013-12-30 22:04:19.000000000","message":"Move this to be the last paragraph in the section since it\u0027s the least-common way to authenticate.\n\nAlso, if you\u0027re going to say that you can use a token to authenticate then should provide an example of using a token to authenticate.","commit_id":"0413d9734473561fda50cfdff09a1c20c20e9346"},{"author":{"_account_id":8996,"name":"Florent Flament","email":"contact@florentflament.com","username":"florent"},"change_message_id":"5d0d8389bc77f03f588ef6ee5e5b19361352ce41","unresolved":false,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":"During the initial configuration phase, the admin token (sometimes"},{"line_number":85,"context_line":"referred to as the service token) specified as the ``admin_token`` in"},{"line_number":86,"context_line":"the keystone.conf config file (typically in /etc/keystone) is used."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Thanks to the authentication plugins mechanism, many ways are"},{"line_number":89,"context_line":"available to authenticate against Keystone."}],"source_content_type":"text/x-rst","patch_set":7,"id":"AAAAT3%2F%2FzBY%3D","line":86,"in_reply_to":"AAAAT3%2F%2F0SU%3D","updated":"2013-12-31 10:45:57.000000000","message":"Actually, I think I\u0027ll remove this part. The howto should only provide examples of most used methods. Documenting here the token authentication doesn\u0027t make that much sense, since it is only marginally used.","commit_id":"0413d9734473561fda50cfdff09a1c20c20e9346"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a7b8ab6b75c7c1b090e26bd3d26ea8f9c64bda07","unresolved":false,"context_lines":[{"line_number":86,"context_line":"the keystone.conf config file (typically in /etc/keystone) is used."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Thanks to the authentication plugins mechanism, many ways are"},{"line_number":89,"context_line":"available to authenticate against Keystone."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"You can authenticate using a username, a user domain name (which will"},{"line_number":92,"context_line":"default to \u0027Default\u0027 if it is not specified) and a password::"}],"source_content_type":"text/x-rst","patch_set":7,"id":"AAAAT3%2F%2F0SQ%3D","line":89,"updated":"2013-12-30 22:04:19.000000000","message":"I think this paragraph should be removed since it\u0027s not very useful.","commit_id":"0413d9734473561fda50cfdff09a1c20c20e9346"},{"author":{"_account_id":8996,"name":"Florent Flament","email":"contact@florentflament.com","username":"florent"},"change_message_id":"5d0d8389bc77f03f588ef6ee5e5b19361352ce41","unresolved":false,"context_lines":[{"line_number":86,"context_line":"the keystone.conf config file (typically in /etc/keystone) is used."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Thanks to the authentication plugins mechanism, many ways are"},{"line_number":89,"context_line":"available to authenticate against Keystone."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"You can authenticate using a username, a user domain name (which will"},{"line_number":92,"context_line":"default to \u0027Default\u0027 if it is not specified) and a password::"}],"source_content_type":"text/x-rst","patch_set":7,"id":"AAAAT3%2F%2FzBU%3D","line":89,"in_reply_to":"AAAAT3%2F%2F0SQ%3D","updated":"2013-12-31 10:45:57.000000000","message":"agree","commit_id":"0413d9734473561fda50cfdff09a1c20c20e9346"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a7b8ab6b75c7c1b090e26bd3d26ea8f9c64bda07","unresolved":false,"context_lines":[{"line_number":91,"context_line":"You can authenticate using a username, a user domain name (which will"},{"line_number":92,"context_line":"default to \u0027Default\u0027 if it is not specified) and a password::"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    \u003e\u003e\u003e from keystoneclient.v3 import client"},{"line_number":95,"context_line":"    \u003e\u003e\u003e username \u003d \u0027adminUser\u0027"},{"line_number":96,"context_line":"    \u003e\u003e\u003e user_domain_name \u003d \u0027Default\u0027"},{"line_number":97,"context_line":"    \u003e\u003e\u003e password \u003d \u0027secreetword\u0027"}],"source_content_type":"text/x-rst","patch_set":7,"id":"AAAAT3%2F%2F0SA%3D","line":94,"updated":"2013-12-30 22:04:19.000000000","message":"the preferred method is to use discovery, so the examples should use discovery.","commit_id":"0413d9734473561fda50cfdff09a1c20c20e9346"},{"author":{"_account_id":8996,"name":"Florent Flament","email":"contact@florentflament.com","username":"florent"},"change_message_id":"5d0d8389bc77f03f588ef6ee5e5b19361352ce41","unresolved":false,"context_lines":[{"line_number":91,"context_line":"You can authenticate using a username, a user domain name (which will"},{"line_number":92,"context_line":"default to \u0027Default\u0027 if it is not specified) and a password::"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    \u003e\u003e\u003e from keystoneclient.v3 import client"},{"line_number":95,"context_line":"    \u003e\u003e\u003e username \u003d \u0027adminUser\u0027"},{"line_number":96,"context_line":"    \u003e\u003e\u003e user_domain_name \u003d \u0027Default\u0027"},{"line_number":97,"context_line":"    \u003e\u003e\u003e password \u003d \u0027secreetword\u0027"}],"source_content_type":"text/x-rst","patch_set":7,"id":"AAAAT3%2F%2FzBM%3D","line":94,"in_reply_to":"AAAAT3%2F%2F0SA%3D","updated":"2013-12-31 10:45:57.000000000","message":"It makes sense","commit_id":"0413d9734473561fda50cfdff09a1c20c20e9346"}]}
