)]}'
{"doc/source/architecture.rst":[{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"283c56a2d3c9d40cd3146638f9ce8f2bb85a9848","unresolved":false,"context_lines":[{"line_number":36,"context_line":"--------"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"The Identity service provides auth credential validation and data about `users`"},{"line_number":39,"context_line":"and `groups`. In the basic case all this data is managed by the service,"},{"line_number":40,"context_line":"allowing the service to manage all the CRUD associated with the data. In more"},{"line_number":41,"context_line":"complex cases, data is managed from an authoritative backend service. An"},{"line_number":42,"context_line":"example of this would be when backending on LDAP. The LDAP backend utilizes the"},{"line_number":43,"context_line":"LDAP server as the source for user and group data."}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a3905b3_7690a196","line":40,"range":{"start_line":39,"start_character":14,"end_line":40,"end_character":69},"updated":"2017-01-19 06:17:40.000000000","message":"This sentence looks weird, maybe this could be changed to something like:\n\n\"In the basic case, this data is managed by the Identity service, which allows it to manage all CRUD operations that are associated with this data.\"","commit_id":"89ee420f9d63666ca638984cb48a8c7597813914"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"4858d8e1aad361db3fa806efbe432baa033f50a3","unresolved":false,"context_lines":[{"line_number":36,"context_line":"--------"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"The Identity service provides auth credential validation and data about `users`"},{"line_number":39,"context_line":"and `groups`. In the basic case all this data is managed by the service,"},{"line_number":40,"context_line":"allowing the service to manage all the CRUD associated with the data. In more"},{"line_number":41,"context_line":"complex cases, data is managed from an authoritative backend service. An"},{"line_number":42,"context_line":"example of this would be when backending on LDAP. The LDAP backend utilizes the"},{"line_number":43,"context_line":"LDAP server as the source for user and group data."}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a3905b3_5da49056","line":40,"range":{"start_line":39,"start_character":14,"end_line":40,"end_character":69},"in_reply_to":"5a3905b3_7690a196","updated":"2017-01-19 13:15:55.000000000","message":"++","commit_id":"89ee420f9d63666ca638984cb48a8c7597813914"},{"author":{"_account_id":16157,"name":"Ken Johnston","email":"kenny@kencjohnston.com","username":"kencjohnston"},"change_message_id":"be12f385167015e0961b7465a3f10ce496a3150a","unresolved":false,"context_lines":[{"line_number":36,"context_line":"--------"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"The Identity service provides auth credential validation and data about `users`"},{"line_number":39,"context_line":"and `groups`. In the basic case all this data is managed by the service,"},{"line_number":40,"context_line":"allowing the service to manage all the CRUD associated with the data. In more"},{"line_number":41,"context_line":"complex cases, data is managed from an authoritative backend service. An"},{"line_number":42,"context_line":"example of this would be when backending on LDAP. The LDAP backend utilizes the"},{"line_number":43,"context_line":"LDAP server as the source for user and group data."}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a3905b3_45374eb0","line":40,"range":{"start_line":39,"start_character":14,"end_line":40,"end_character":69},"in_reply_to":"5a3905b3_7690a196","updated":"2017-01-19 15:07:42.000000000","message":"Done","commit_id":"89ee420f9d63666ca638984cb48a8c7597813914"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"283c56a2d3c9d40cd3146638f9ce8f2bb85a9848","unresolved":false,"context_lines":[{"line_number":38,"context_line":"The Identity service provides auth credential validation and data about `users`"},{"line_number":39,"context_line":"and `groups`. In the basic case all this data is managed by the service,"},{"line_number":40,"context_line":"allowing the service to manage all the CRUD associated with the data. In more"},{"line_number":41,"context_line":"complex cases, data is managed from an authoritative backend service. An"},{"line_number":42,"context_line":"example of this would be when backending on LDAP. The LDAP backend utilizes the"},{"line_number":43,"context_line":"LDAP server as the source for user and group data."},{"line_number":44,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a3905b3_16f83de5","line":41,"range":{"start_line":41,"start_character":15,"end_line":41,"end_character":19},"updated":"2017-01-19 06:17:40.000000000","message":"nit: s/data/the data/","commit_id":"89ee420f9d63666ca638984cb48a8c7597813914"},{"author":{"_account_id":16157,"name":"Ken Johnston","email":"kenny@kencjohnston.com","username":"kencjohnston"},"change_message_id":"be12f385167015e0961b7465a3f10ce496a3150a","unresolved":false,"context_lines":[{"line_number":38,"context_line":"The Identity service provides auth credential validation and data about `users`"},{"line_number":39,"context_line":"and `groups`. In the basic case all this data is managed by the service,"},{"line_number":40,"context_line":"allowing the service to manage all the CRUD associated with the data. In more"},{"line_number":41,"context_line":"complex cases, data is managed from an authoritative backend service. An"},{"line_number":42,"context_line":"example of this would be when backending on LDAP. The LDAP backend utilizes the"},{"line_number":43,"context_line":"LDAP server as the source for user and group data."},{"line_number":44,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a3905b3_45058ec0","line":41,"range":{"start_line":41,"start_character":15,"end_line":41,"end_character":19},"in_reply_to":"5a3905b3_16f83de5","updated":"2017-01-19 15:07:42.000000000","message":"Done","commit_id":"89ee420f9d63666ca638984cb48a8c7597813914"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"283c56a2d3c9d40cd3146638f9ce8f2bb85a9848","unresolved":false,"context_lines":[{"line_number":275,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"Keystone was designed from the ground up to be amenable to multiple styles of"},{"line_number":278,"context_line":"backends. As such many of the methods and data types will happily accept more"},{"line_number":279,"context_line":"data than they know what to do with and pass them on to a backend."},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"There are a few main data types:"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a3905b3_76bee100","line":278,"range":{"start_line":278,"start_character":10,"end_line":278,"end_character":22},"updated":"2017-01-19 06:17:40.000000000","message":"\"As such, many\"","commit_id":"89ee420f9d63666ca638984cb48a8c7597813914"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"4858d8e1aad361db3fa806efbe432baa033f50a3","unresolved":false,"context_lines":[{"line_number":275,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"Keystone was designed from the ground up to be amenable to multiple styles of"},{"line_number":278,"context_line":"backends. As such many of the methods and data types will happily accept more"},{"line_number":279,"context_line":"data than they know what to do with and pass them on to a backend."},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"There are a few main data types:"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a3905b3_bd93b4f9","line":278,"range":{"start_line":278,"start_character":10,"end_line":278,"end_character":22},"in_reply_to":"5a3905b3_76bee100","updated":"2017-01-19 13:15:55.000000000","message":"++","commit_id":"89ee420f9d63666ca638984cb48a8c7597813914"},{"author":{"_account_id":16157,"name":"Ken Johnston","email":"kenny@kencjohnston.com","username":"kencjohnston"},"change_message_id":"be12f385167015e0961b7465a3f10ce496a3150a","unresolved":false,"context_lines":[{"line_number":275,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"Keystone was designed from the ground up to be amenable to multiple styles of"},{"line_number":278,"context_line":"backends. As such many of the methods and data types will happily accept more"},{"line_number":279,"context_line":"data than they know what to do with and pass them on to a backend."},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"There are a few main data types:"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a3905b3_c5f97eca","line":278,"range":{"start_line":278,"start_character":10,"end_line":278,"end_character":22},"in_reply_to":"5a3905b3_76bee100","updated":"2017-01-19 15:07:42.000000000","message":"Done","commit_id":"89ee420f9d63666ca638984cb48a8c7597813914"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"283c56a2d3c9d40cd3146638f9ce8f2bb85a9848","unresolved":false,"context_lines":[{"line_number":462,"context_line":"    $ export OS_PASSWORD\u003dsecretsecret"},{"line_number":463,"context_line":"    $ export OS_PROJECT_NAME\u003dproject-x"},{"line_number":464,"context_line":""},{"line_number":465,"context_line":"Note that the project the user is attempting to access must be in the same"},{"line_number":466,"context_line":"domain as the user."},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"What is Scope?"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a3905b3_b63689b2","line":465,"range":{"start_line":465,"start_character":32,"end_line":465,"end_character":33},"updated":"2017-01-19 06:17:40.000000000","message":"nice catch here","commit_id":"89ee420f9d63666ca638984cb48a8c7597813914"},{"author":{"_account_id":16465,"name":"Kristi Nikolla","email":"knikolla@bu.edu","username":"knikolla"},"change_message_id":"293bf74f85a19aa9830e169716e854d305d55a2e","unresolved":false,"context_lines":[{"line_number":18,"context_line":"Keystone Architecture"},{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Much of the design assumes auth backends for most deployments will be shims in"},{"line_number":22,"context_line":"front of existing user systems."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5a3905b3_4ed5a641","line":21,"updated":"2017-01-19 17:15:03.000000000","message":"nit: Just my opinion, but I would prefer if this was rephrased as something like \"Much of the design assumes that in most deployments auth backends will be shims in front.. \". The way it is, the sentence looks weird.","commit_id":"02235372d355d5a67c04e5a40e49c7b2c2e643a9"},{"author":{"_account_id":16157,"name":"Ken Johnston","email":"kenny@kencjohnston.com","username":"kencjohnston"},"change_message_id":"d317be2bd959b069353c0f6e4fe51ad2588e578d","unresolved":false,"context_lines":[{"line_number":18,"context_line":"Keystone Architecture"},{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Much of the design assumes auth backends for most deployments will be shims in"},{"line_number":22,"context_line":"front of existing user systems."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5a3905b3_c4687b8a","line":21,"in_reply_to":"5a3905b3_4ed5a641","updated":"2017-01-20 05:23:38.000000000","message":"I like it!","commit_id":"02235372d355d5a67c04e5a40e49c7b2c2e643a9"},{"author":{"_account_id":16465,"name":"Kristi Nikolla","email":"knikolla@bu.edu","username":"knikolla"},"change_message_id":"293bf74f85a19aa9830e169716e854d305d55a2e","unresolved":false,"context_lines":[{"line_number":36,"context_line":"--------"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"The Identity service provides auth credential validation and data about `users`"},{"line_number":39,"context_line":"and `groups`. In the basic case, this data is managed by the Identity service,"},{"line_number":40,"context_line":"which allows it to manage all the CRUD operations that are associated with this"},{"line_number":41,"context_line":"data. In more complex cases, the data is managed from an authoritative backend"},{"line_number":42,"context_line":"service. An example of this would be when backending on LDAP. The LDAP backend"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5a3905b3_4ebbe6c4","line":39,"range":{"start_line":39,"start_character":61,"end_line":39,"end_character":77},"updated":"2017-01-19 17:15:03.000000000","message":"saying \"Identity service itself\", would drive the point more clearly.","commit_id":"02235372d355d5a67c04e5a40e49c7b2c2e643a9"},{"author":{"_account_id":16157,"name":"Ken Johnston","email":"kenny@kencjohnston.com","username":"kencjohnston"},"change_message_id":"d317be2bd959b069353c0f6e4fe51ad2588e578d","unresolved":false,"context_lines":[{"line_number":36,"context_line":"--------"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"The Identity service provides auth credential validation and data about `users`"},{"line_number":39,"context_line":"and `groups`. In the basic case, this data is managed by the Identity service,"},{"line_number":40,"context_line":"which allows it to manage all the CRUD operations that are associated with this"},{"line_number":41,"context_line":"data. In more complex cases, the data is managed from an authoritative backend"},{"line_number":42,"context_line":"service. An example of this would be when backending on LDAP. The LDAP backend"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5a3905b3_24277f65","line":39,"range":{"start_line":39,"start_character":61,"end_line":39,"end_character":77},"in_reply_to":"5a3905b3_4ebbe6c4","updated":"2017-01-20 05:23:38.000000000","message":"Done","commit_id":"02235372d355d5a67c04e5a40e49c7b2c2e643a9"},{"author":{"_account_id":16465,"name":"Kristi Nikolla","email":"knikolla@bu.edu","username":"knikolla"},"change_message_id":"293bf74f85a19aa9830e169716e854d305d55a2e","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"The Identity service provides auth credential validation and data about `users`"},{"line_number":39,"context_line":"and `groups`. In the basic case, this data is managed by the Identity service,"},{"line_number":40,"context_line":"which allows it to manage all the CRUD operations that are associated with this"},{"line_number":41,"context_line":"data. In more complex cases, the data is managed from an authoritative backend"},{"line_number":42,"context_line":"service. An example of this would be when backending on LDAP. The LDAP backend"},{"line_number":43,"context_line":"utilizes the LDAP server as the source for user and group data."}],"source_content_type":"text/x-rst","patch_set":2,"id":"5a3905b3_ae544a54","line":40,"range":{"start_line":40,"start_character":50,"end_line":40,"end_character":58},"updated":"2017-01-19 17:15:03.000000000","message":"\"that are\" isn\u0027t really necessary here.","commit_id":"02235372d355d5a67c04e5a40e49c7b2c2e643a9"},{"author":{"_account_id":16465,"name":"Kristi Nikolla","email":"knikolla@bu.edu","username":"knikolla"},"change_message_id":"293bf74f85a19aa9830e169716e854d305d55a2e","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"The Identity service provides auth credential validation and data about `users`"},{"line_number":39,"context_line":"and `groups`. In the basic case, this data is managed by the Identity service,"},{"line_number":40,"context_line":"which allows it to manage all the CRUD operations that are associated with this"},{"line_number":41,"context_line":"data. In more complex cases, the data is managed from an authoritative backend"},{"line_number":42,"context_line":"service. An example of this would be when backending on LDAP. The LDAP backend"},{"line_number":43,"context_line":"utilizes the LDAP server as the source for user and group data."}],"source_content_type":"text/x-rst","patch_set":2,"id":"5a3905b3_6ed182cd","line":40,"range":{"start_line":40,"start_character":0,"end_line":40,"end_character":33},"updated":"2017-01-19 17:15:03.000000000","message":"manage is repeated twice in the same sentence, you can use handle instead. So it may look something like \"allowing it to also handle all\" (also \"the\" isn\u0027t really necessary if you say all)","commit_id":"02235372d355d5a67c04e5a40e49c7b2c2e643a9"},{"author":{"_account_id":16157,"name":"Ken Johnston","email":"kenny@kencjohnston.com","username":"kencjohnston"},"change_message_id":"d317be2bd959b069353c0f6e4fe51ad2588e578d","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"The Identity service provides auth credential validation and data about `users`"},{"line_number":39,"context_line":"and `groups`. In the basic case, this data is managed by the Identity service,"},{"line_number":40,"context_line":"which allows it to manage all the CRUD operations that are associated with this"},{"line_number":41,"context_line":"data. In more complex cases, the data is managed from an authoritative backend"},{"line_number":42,"context_line":"service. An example of this would be when backending on LDAP. The LDAP backend"},{"line_number":43,"context_line":"utilizes the LDAP server as the source for user and group data."}],"source_content_type":"text/x-rst","patch_set":2,"id":"5a3905b3_24de9f3f","line":40,"range":{"start_line":40,"start_character":0,"end_line":40,"end_character":33},"in_reply_to":"5a3905b3_6ed182cd","updated":"2017-01-20 05:23:38.000000000","message":"Done","commit_id":"02235372d355d5a67c04e5a40e49c7b2c2e643a9"},{"author":{"_account_id":16157,"name":"Ken Johnston","email":"kenny@kencjohnston.com","username":"kencjohnston"},"change_message_id":"d317be2bd959b069353c0f6e4fe51ad2588e578d","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"The Identity service provides auth credential validation and data about `users`"},{"line_number":39,"context_line":"and `groups`. In the basic case, this data is managed by the Identity service,"},{"line_number":40,"context_line":"which allows it to manage all the CRUD operations that are associated with this"},{"line_number":41,"context_line":"data. In more complex cases, the data is managed from an authoritative backend"},{"line_number":42,"context_line":"service. An example of this would be when backending on LDAP. The LDAP backend"},{"line_number":43,"context_line":"utilizes the LDAP server as the source for user and group data."}],"source_content_type":"text/x-rst","patch_set":2,"id":"5a3905b3_64e8a7e3","line":40,"range":{"start_line":40,"start_character":50,"end_line":40,"end_character":58},"in_reply_to":"5a3905b3_ae544a54","updated":"2017-01-20 05:23:38.000000000","message":"Done","commit_id":"02235372d355d5a67c04e5a40e49c7b2c2e643a9"},{"author":{"_account_id":16465,"name":"Kristi Nikolla","email":"knikolla@bu.edu","username":"knikolla"},"change_message_id":"293bf74f85a19aa9830e169716e854d305d55a2e","unresolved":false,"context_lines":[{"line_number":38,"context_line":"The Identity service provides auth credential validation and data about `users`"},{"line_number":39,"context_line":"and `groups`. In the basic case, this data is managed by the Identity service,"},{"line_number":40,"context_line":"which allows it to manage all the CRUD operations that are associated with this"},{"line_number":41,"context_line":"data. In more complex cases, the data is managed from an authoritative backend"},{"line_number":42,"context_line":"service. An example of this would be when backending on LDAP. The LDAP backend"},{"line_number":43,"context_line":"utilizes the LDAP server as the source for user and group data."},{"line_number":44,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5a3905b3_ae89aacc","line":41,"range":{"start_line":41,"start_character":29,"end_line":41,"end_character":53},"updated":"2017-01-19 17:15:03.000000000","message":"\"the data is instead managed by\"","commit_id":"02235372d355d5a67c04e5a40e49c7b2c2e643a9"},{"author":{"_account_id":16157,"name":"Ken Johnston","email":"kenny@kencjohnston.com","username":"kencjohnston"},"change_message_id":"d317be2bd959b069353c0f6e4fe51ad2588e578d","unresolved":false,"context_lines":[{"line_number":38,"context_line":"The Identity service provides auth credential validation and data about `users`"},{"line_number":39,"context_line":"and `groups`. In the basic case, this data is managed by the Identity service,"},{"line_number":40,"context_line":"which allows it to manage all the CRUD operations that are associated with this"},{"line_number":41,"context_line":"data. In more complex cases, the data is managed from an authoritative backend"},{"line_number":42,"context_line":"service. An example of this would be when backending on LDAP. The LDAP backend"},{"line_number":43,"context_line":"utilizes the LDAP server as the source for user and group data."},{"line_number":44,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5a3905b3_e4a1f7aa","line":41,"range":{"start_line":41,"start_character":29,"end_line":41,"end_character":53},"in_reply_to":"5a3905b3_ae89aacc","updated":"2017-01-20 05:23:38.000000000","message":"Done","commit_id":"02235372d355d5a67c04e5a40e49c7b2c2e643a9"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"5eea3aa1d7bb26b1ae3569f666448f6c2487dde0","unresolved":false,"context_lines":[{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Much of the design assumes that in most deployments auth backends will be shims"},{"line_number":22,"context_line":"in front existing user systems."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Services"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a461143_370424bf","line":22,"range":{"start_line":22,"start_character":0,"end_line":22,"end_character":17},"updated":"2017-01-26 13:02:54.000000000","message":"the \u0027of\u0027 was unnecessarily deleted","commit_id":"ba97b0749119e7ec3a2892686d333c44972010e4"},{"author":{"_account_id":16157,"name":"Ken Johnston","email":"kenny@kencjohnston.com","username":"kencjohnston"},"change_message_id":"9fb78a289bb210d26b52bcc220e44fa1640a4f65","unresolved":false,"context_lines":[{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Much of the design assumes that in most deployments auth backends will be shims"},{"line_number":22,"context_line":"in front existing user systems."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Services"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a461143_22c5c13b","line":22,"range":{"start_line":22,"start_character":0,"end_line":22,"end_character":17},"in_reply_to":"3a461143_370424bf","updated":"2017-01-26 14:20:21.000000000","message":"Done","commit_id":"ba97b0749119e7ec3a2892686d333c44972010e4"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"d35a789626bc95033c51e845bc6459ab280f47e9","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"The Identity service provides auth credential validation and data about `users`"},{"line_number":39,"context_line":"and `groups`. In the basic case, this data is managed by the Identity service"},{"line_number":40,"context_line":"itself allowing it to also handle all CRUD operations associated with this"},{"line_number":41,"context_line":"data. In more complex cases, the data is instead managed by an authoritative"},{"line_number":42,"context_line":"backend service. An example of this would be when backending on LDAP. The LDAP"},{"line_number":43,"context_line":"backend utilizes the LDAP server as the source for user and group data."}],"source_content_type":"text/x-rst","patch_set":4,"id":"5a3905b3_e3bab26d","line":40,"range":{"start_line":40,"start_character":27,"end_line":40,"end_character":33},"updated":"2017-01-20 15:55:39.000000000","message":"Yeah, \u0027handle\u0027 works better here than another \u0027manage\u0027, I like it.","commit_id":"ba97b0749119e7ec3a2892686d333c44972010e4"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"5eea3aa1d7bb26b1ae3569f666448f6c2487dde0","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"The Identity service provides auth credential validation and data about `users`"},{"line_number":39,"context_line":"and `groups`. In the basic case, this data is managed by the Identity service"},{"line_number":40,"context_line":"itself allowing it to also handle all CRUD operations associated with this"},{"line_number":41,"context_line":"data. In more complex cases, the data is instead managed by an authoritative"},{"line_number":42,"context_line":"backend service. An example of this would be when backending on LDAP. The LDAP"},{"line_number":43,"context_line":"backend utilizes the LDAP server as the source for user and group data."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a461143_57c61068","line":40,"range":{"start_line":40,"start_character":6,"end_line":40,"end_character":7},"updated":"2017-01-26 13:02:54.000000000","message":"should probably add the comma back here","commit_id":"ba97b0749119e7ec3a2892686d333c44972010e4"},{"author":{"_account_id":16157,"name":"Ken Johnston","email":"kenny@kencjohnston.com","username":"kencjohnston"},"change_message_id":"9fb78a289bb210d26b52bcc220e44fa1640a4f65","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"The Identity service provides auth credential validation and data about `users`"},{"line_number":39,"context_line":"and `groups`. In the basic case, this data is managed by the Identity service"},{"line_number":40,"context_line":"itself allowing it to also handle all CRUD operations associated with this"},{"line_number":41,"context_line":"data. In more complex cases, the data is instead managed by an authoritative"},{"line_number":42,"context_line":"backend service. An example of this would be when backending on LDAP. The LDAP"},{"line_number":43,"context_line":"backend utilizes the LDAP server as the source for user and group data."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a461143_c2ecfdc9","line":40,"range":{"start_line":40,"start_character":6,"end_line":40,"end_character":7},"in_reply_to":"3a461143_57c61068","updated":"2017-01-26 14:20:21.000000000","message":"Done","commit_id":"ba97b0749119e7ec3a2892686d333c44972010e4"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"5eea3aa1d7bb26b1ae3569f666448f6c2487dde0","unresolved":false,"context_lines":[{"line_number":39,"context_line":"and `groups`. In the basic case, this data is managed by the Identity service"},{"line_number":40,"context_line":"itself allowing it to also handle all CRUD operations associated with this"},{"line_number":41,"context_line":"data. In more complex cases, the data is instead managed by an authoritative"},{"line_number":42,"context_line":"backend service. An example of this would be when backending on LDAP. The LDAP"},{"line_number":43,"context_line":"backend utilizes the LDAP server as the source for user and group data."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Users"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a461143_97bb18c4","line":42,"range":{"start_line":42,"start_character":50,"end_line":42,"end_character":68},"updated":"2017-01-26 13:02:54.000000000","message":"this is awkward phrasing, I\u0027m not sure \"backending\" is even a word, might as well fix it up as long as we\u0027re here","commit_id":"ba97b0749119e7ec3a2892686d333c44972010e4"},{"author":{"_account_id":16157,"name":"Ken Johnston","email":"kenny@kencjohnston.com","username":"kencjohnston"},"change_message_id":"9fb78a289bb210d26b52bcc220e44fa1640a4f65","unresolved":false,"context_lines":[{"line_number":39,"context_line":"and `groups`. In the basic case, this data is managed by the Identity service"},{"line_number":40,"context_line":"itself allowing it to also handle all CRUD operations associated with this"},{"line_number":41,"context_line":"data. In more complex cases, the data is instead managed by an authoritative"},{"line_number":42,"context_line":"backend service. An example of this would be when backending on LDAP. The LDAP"},{"line_number":43,"context_line":"backend utilizes the LDAP server as the source for user and group data."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Users"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a461143_622b49ec","line":42,"range":{"start_line":42,"start_character":50,"end_line":42,"end_character":68},"in_reply_to":"3a461143_97bb18c4","updated":"2017-01-26 14:20:21.000000000","message":"Done","commit_id":"ba97b0749119e7ec3a2892686d333c44972010e4"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"5eea3aa1d7bb26b1ae3569f666448f6c2487dde0","unresolved":false,"context_lines":[{"line_number":289,"context_line":" * **Extras**: bucket of key-value metadata associated with a user-project pair."},{"line_number":290,"context_line":" * **Rule**: describes a set of requirements for performing an action."},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"While the general data model allows many-to-many relationships between users"},{"line_number":293,"context_line":"and groups as well as projects and domains; the actual backend implementations"},{"line_number":294,"context_line":"take varying levels of advantage of that functionality."},{"line_number":295,"context_line":""},{"line_number":296,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a461143_77bcec6c","line":293,"range":{"start_line":292,"start_character":71,"end_line":293,"end_character":42},"updated":"2017-01-26 13:02:54.000000000","message":"I think the original phrasing was more correct - (users|groups) relate to (projects|domains)","commit_id":"ba97b0749119e7ec3a2892686d333c44972010e4"},{"author":{"_account_id":16157,"name":"Ken Johnston","email":"kenny@kencjohnston.com","username":"kencjohnston"},"change_message_id":"9fb78a289bb210d26b52bcc220e44fa1640a4f65","unresolved":false,"context_lines":[{"line_number":289,"context_line":" * **Extras**: bucket of key-value metadata associated with a user-project pair."},{"line_number":290,"context_line":" * **Rule**: describes a set of requirements for performing an action."},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"While the general data model allows many-to-many relationships between users"},{"line_number":293,"context_line":"and groups as well as projects and domains; the actual backend implementations"},{"line_number":294,"context_line":"take varying levels of advantage of that functionality."},{"line_number":295,"context_line":""},{"line_number":296,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a461143_1d1e6663","line":293,"range":{"start_line":292,"start_character":71,"end_line":293,"end_character":42},"in_reply_to":"3a461143_77bcec6c","updated":"2017-01-26 14:20:21.000000000","message":"Ah, I get it now. Fixed. Let me know if this is too verbose.","commit_id":"ba97b0749119e7ec3a2892686d333c44972010e4"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"b4d704af33d38ef9692fa7a441dcb36a0ffcf842","unresolved":false,"context_lines":[{"line_number":39,"context_line":"and `groups`. In the basic case, this data is managed by the Identity service"},{"line_number":40,"context_line":"itself, allowing it to also handle all CRUD operations associated with this"},{"line_number":41,"context_line":"data. In more complex cases, the data is instead managed by an authoritative"},{"line_number":42,"context_line":"backend service. An example of this would be when the identity service acts as"},{"line_number":43,"context_line":"a backend for LDAP. The LDAP backend utilizes the LDAP server as the source for"},{"line_number":44,"context_line":"user and group data."},{"line_number":45,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"3a461143_137d6e6e","line":42,"range":{"start_line":42,"start_character":54,"end_line":42,"end_character":62},"updated":"2017-01-26 17:01:58.000000000","message":"Should capitalize \u0027Identity\u0027\n\nhttps://governance.openstack.org/tc/reference/service-project-naming.html","commit_id":"b527c2389860ff9a445e9043daf1d462440a7df1"},{"author":{"_account_id":16157,"name":"Ken Johnston","email":"kenny@kencjohnston.com","username":"kencjohnston"},"change_message_id":"e85198a71433492b9010f4b9a866c5757de15300","unresolved":false,"context_lines":[{"line_number":39,"context_line":"and `groups`. In the basic case, this data is managed by the Identity service"},{"line_number":40,"context_line":"itself, allowing it to also handle all CRUD operations associated with this"},{"line_number":41,"context_line":"data. In more complex cases, the data is instead managed by an authoritative"},{"line_number":42,"context_line":"backend service. An example of this would be when the identity service acts as"},{"line_number":43,"context_line":"a backend for LDAP. The LDAP backend utilizes the LDAP server as the source for"},{"line_number":44,"context_line":"user and group data."},{"line_number":45,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"3a461143_133c8ee1","line":42,"range":{"start_line":42,"start_character":54,"end_line":42,"end_character":62},"in_reply_to":"3a461143_137d6e6e","updated":"2017-01-26 17:14:51.000000000","message":"Done","commit_id":"b527c2389860ff9a445e9043daf1d462440a7df1"},{"author":{"_account_id":16465,"name":"Kristi Nikolla","email":"knikolla@bu.edu","username":"knikolla"},"change_message_id":"7efdad32fa9452cd0c17f79485ef0c66274bb10b","unresolved":false,"context_lines":[{"line_number":40,"context_line":"itself, allowing it to also handle all CRUD operations associated with this"},{"line_number":41,"context_line":"data. In more complex cases, the data is instead managed by an authoritative"},{"line_number":42,"context_line":"backend service. An example of this would be when the identity service acts as"},{"line_number":43,"context_line":"a backend for LDAP. The LDAP backend utilizes the LDAP server as the source for"},{"line_number":44,"context_line":"user and group data."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Users"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3a461143_a7029c09","line":43,"range":{"start_line":43,"start_character":2,"end_line":43,"end_character":9},"updated":"2017-01-26 16:06:08.000000000","message":"wouldn\u0027t this be frontend than? Because LDAP is the backend, not the identity service.","commit_id":"b527c2389860ff9a445e9043daf1d462440a7df1"},{"author":{"_account_id":16157,"name":"Ken Johnston","email":"kenny@kencjohnston.com","username":"kencjohnston"},"change_message_id":"e85198a71433492b9010f4b9a866c5757de15300","unresolved":false,"context_lines":[{"line_number":40,"context_line":"itself, allowing it to also handle all CRUD operations associated with this"},{"line_number":41,"context_line":"data. In more complex cases, the data is instead managed by an authoritative"},{"line_number":42,"context_line":"backend service. An example of this would be when the identity service acts as"},{"line_number":43,"context_line":"a backend for LDAP. The LDAP backend utilizes the LDAP server as the source for"},{"line_number":44,"context_line":"user and group data."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Users"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3a461143_b3549a21","line":43,"range":{"start_line":43,"start_character":2,"end_line":43,"end_character":9},"in_reply_to":"3a461143_13a64e10","updated":"2017-01-26 17:14:51.000000000","message":"Done","commit_id":"b527c2389860ff9a445e9043daf1d462440a7df1"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"b4d704af33d38ef9692fa7a441dcb36a0ffcf842","unresolved":false,"context_lines":[{"line_number":40,"context_line":"itself, allowing it to also handle all CRUD operations associated with this"},{"line_number":41,"context_line":"data. In more complex cases, the data is instead managed by an authoritative"},{"line_number":42,"context_line":"backend service. An example of this would be when the identity service acts as"},{"line_number":43,"context_line":"a backend for LDAP. The LDAP backend utilizes the LDAP server as the source for"},{"line_number":44,"context_line":"user and group data."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Users"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3a461143_13a64e10","line":43,"range":{"start_line":43,"start_character":2,"end_line":43,"end_character":9},"in_reply_to":"3a461143_a7029c09","updated":"2017-01-26 17:01:58.000000000","message":"++, could possible change it to say \"... when LDAP acts as a backend for the Identity service.\" or just s/backend/frontend as it is now","commit_id":"b527c2389860ff9a445e9043daf1d462440a7df1"},{"author":{"_account_id":16157,"name":"Ken Johnston","email":"kenny@kencjohnston.com","username":"kencjohnston"},"change_message_id":"e85198a71433492b9010f4b9a866c5757de15300","unresolved":false,"context_lines":[{"line_number":40,"context_line":"itself, allowing it to also handle all CRUD operations associated with this"},{"line_number":41,"context_line":"data. In more complex cases, the data is instead managed by an authoritative"},{"line_number":42,"context_line":"backend service. An example of this would be when the identity service acts as"},{"line_number":43,"context_line":"a backend for LDAP. The LDAP backend utilizes the LDAP server as the source for"},{"line_number":44,"context_line":"user and group data."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Users"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3a461143_2d876dd8","line":43,"range":{"start_line":43,"start_character":2,"end_line":43,"end_character":9},"in_reply_to":"3a461143_a7029c09","updated":"2017-01-26 17:14:51.000000000","message":"Duh, sorry. Fixed.","commit_id":"b527c2389860ff9a445e9043daf1d462440a7df1"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"4725fcc94a8e6c9966795953529f8ae405c81417","unresolved":false,"context_lines":[{"line_number":291,"context_line":" * **Rule**: describes a set of requirements for performing an action."},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"The general data model allows a many-to-many relationship between users/groups"},{"line_number":294,"context_line":"and projects/domains. This means an individual user or group of users can reside"},{"line_number":295,"context_line":"in multiple projects or domains and an individual project or domain can contain"},{"line_number":296,"context_line":"multiple users or groups. However, backend implementations take varying levels"},{"line_number":297,"context_line":"of advantage of this functionality."}],"source_content_type":"text/x-rst","patch_set":6,"id":"3a461143_431aa16f","line":294,"range":{"start_line":294,"start_character":70,"end_line":294,"end_character":80},"updated":"2017-01-27 12:41:10.000000000","message":"this gives an idea of ownership (not association), which is not accurate for groups/users relationship with projects/domains.","commit_id":"a9952703291c8dff740cfe54144d4d7a1e17c801"},{"author":{"_account_id":16157,"name":"Ken Johnston","email":"kenny@kencjohnston.com","username":"kencjohnston"},"change_message_id":"f5654037b1c49d373eaa5abae91ce2592fc8d0c1","unresolved":false,"context_lines":[{"line_number":291,"context_line":" * **Rule**: describes a set of requirements for performing an action."},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"The general data model allows a many-to-many relationship between users/groups"},{"line_number":294,"context_line":"and projects/domains. This means an individual user or group of users can reside"},{"line_number":295,"context_line":"in multiple projects or domains and an individual project or domain can contain"},{"line_number":296,"context_line":"multiple users or groups. However, backend implementations take varying levels"},{"line_number":297,"context_line":"of advantage of this functionality."}],"source_content_type":"text/x-rst","patch_set":6,"id":"3a461143_3d949441","line":294,"range":{"start_line":294,"start_character":70,"end_line":294,"end_character":80},"in_reply_to":"3a461143_431aa16f","updated":"2017-01-30 14:30:18.000000000","message":"Done","commit_id":"a9952703291c8dff740cfe54144d4d7a1e17c801"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"f48ab9ef2f11076d386f0ecd80cf98f8873e26b5","unresolved":false,"context_lines":[{"line_number":292,"context_line":""},{"line_number":293,"context_line":"The general data model allows a many-to-many relationship between users/groups"},{"line_number":294,"context_line":"and projects/domains. This means an individual user or group of users can reside"},{"line_number":295,"context_line":"in multiple projects or domains and an individual project or domain can contain"},{"line_number":296,"context_line":"multiple users or groups. However, backend implementations take varying levels"},{"line_number":297,"context_line":"of advantage of this functionality."},{"line_number":298,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"3a461143_997dd870","line":295,"updated":"2017-01-27 13:31:59.000000000","message":"I\u0027m not 100% sure what this is saying. Users can\u0027t be in multiple domains, but they can have authorization to use multiple domains.","commit_id":"a9952703291c8dff740cfe54144d4d7a1e17c801"},{"author":{"_account_id":16157,"name":"Ken Johnston","email":"kenny@kencjohnston.com","username":"kencjohnston"},"change_message_id":"f5654037b1c49d373eaa5abae91ce2592fc8d0c1","unresolved":false,"context_lines":[{"line_number":292,"context_line":""},{"line_number":293,"context_line":"The general data model allows a many-to-many relationship between users/groups"},{"line_number":294,"context_line":"and projects/domains. This means an individual user or group of users can reside"},{"line_number":295,"context_line":"in multiple projects or domains and an individual project or domain can contain"},{"line_number":296,"context_line":"multiple users or groups. However, backend implementations take varying levels"},{"line_number":297,"context_line":"of advantage of this functionality."},{"line_number":298,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"3a461143_3da2d499","line":295,"in_reply_to":"3a461143_997dd870","updated":"2017-01-30 14:30:18.000000000","message":"Fixed. I used the same verbs used above \n\nprojects/domains \"contains\" users/groups\nusers/groups \"associated with\" projects/domains","commit_id":"a9952703291c8dff740cfe54144d4d7a1e17c801"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"5ae10b42226af9e8de0b0f663995c2a414ad9a8e","unresolved":false,"context_lines":[{"line_number":292,"context_line":""},{"line_number":293,"context_line":"The general data model allows a many-to-many relationship between users/groups"},{"line_number":294,"context_line":"and projects/domains. This means an individual user or group of users can be"},{"line_number":295,"context_line":"associated to multiple projects or domains and an individual project or domain"},{"line_number":296,"context_line":"can contain multiple users or groups. However, backend implementations take"},{"line_number":297,"context_line":"varying levels of advantage of this functionality."},{"line_number":298,"context_line":""},{"line_number":299,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a461143_003e8fd9","line":296,"range":{"start_line":295,"start_character":43,"end_line":296,"end_character":11},"updated":"2017-01-30 14:57:19.000000000","message":"only domains contains users/groups, not projects.","commit_id":"71c93897f3d5624f0ac854b02b6156a74291c476"},{"author":{"_account_id":16157,"name":"Ken Johnston","email":"kenny@kencjohnston.com","username":"kencjohnston"},"change_message_id":"09c8bda46e1a9237e9cb4639022200f00c3c610e","unresolved":false,"context_lines":[{"line_number":292,"context_line":""},{"line_number":293,"context_line":"The general data model allows a many-to-many relationship between users/groups"},{"line_number":294,"context_line":"and projects/domains. This means an individual user or group of users can be"},{"line_number":295,"context_line":"associated to multiple projects or domains and an individual project or domain"},{"line_number":296,"context_line":"can contain multiple users or groups. However, backend implementations take"},{"line_number":297,"context_line":"varying levels of advantage of this functionality."},{"line_number":298,"context_line":""},{"line_number":299,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a461143_36975149","line":296,"range":{"start_line":295,"start_character":43,"end_line":296,"end_character":11},"in_reply_to":"3a461143_003e8fd9","updated":"2017-01-30 15:28:25.000000000","message":"Fixed per:\n\nhttp://eavesdrop.openstack.org/irclogs/%23openstack-keystone/%23openstack-keystone.2017-01-30.log.html","commit_id":"71c93897f3d5624f0ac854b02b6156a74291c476"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1fba1d35f2f8abff099bc3dfcedc234738edbec3","unresolved":false,"context_lines":[{"line_number":41,"context_line":"data. In more complex cases, the data is instead managed by an authoritative"},{"line_number":42,"context_line":"backend service. An example of this would be when the Identity service acts as"},{"line_number":43,"context_line":"a frontend for LDAP. The LDAP backend utilizes the LDAP server as the source for"},{"line_number":44,"context_line":"user and group data."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Users"},{"line_number":47,"context_line":"^^^^^"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3a461143_75862cdc","line":44,"updated":"2017-01-30 17:35:13.000000000","message":"This last sentence reads a little odd since it sounds like we\u0027re referring to LDAP backend for keystone and LDAP server as two separate things, when we haven\u0027t really introduced them individually.\n\nWe could probably simplify this to say something along the lines of LDAP being the source of truth and the job of the Identity service is to relay that information accurately.","commit_id":"60ddc3e8c7a1d9cda44af59d924a923f35d127a4"},{"author":{"_account_id":16157,"name":"Ken Johnston","email":"kenny@kencjohnston.com","username":"kencjohnston"},"change_message_id":"ec150597bb3533bd4976cd68f6838a6fbd2ce967","unresolved":false,"context_lines":[{"line_number":41,"context_line":"data. In more complex cases, the data is instead managed by an authoritative"},{"line_number":42,"context_line":"backend service. An example of this would be when the Identity service acts as"},{"line_number":43,"context_line":"a frontend for LDAP. The LDAP backend utilizes the LDAP server as the source for"},{"line_number":44,"context_line":"user and group data."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Users"},{"line_number":47,"context_line":"^^^^^"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3a461143_c81c426d","line":44,"in_reply_to":"3a461143_75862cdc","updated":"2017-02-01 22:59:00.000000000","message":"Done","commit_id":"60ddc3e8c7a1d9cda44af59d924a923f35d127a4"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"335e80c5fdb491942b9ffef9fdfdc9125446c2e5","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"``Domains`` are a high-level container for projects, users and groups. Each is"},{"line_number":79,"context_line":"owned by exactly one domain. Each domain defines a namespace where an"},{"line_number":80,"context_line":"API-visible name attribute exists. Keystone provides a default domain, aptly"},{"line_number":81,"context_line":"named \u0027Default\u0027."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"In the Identity v3 API, the uniqueness of attributes is as follows:"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3a461143_21c1c654","line":80,"updated":"2017-01-30 18:44:13.000000000","message":"keep this lowercased. The standard is to use lowercasing for project code names. Newer docs reflect this. Ref: https://governance.openstack.org/tc/reference/service-project-naming.html#project-name-guidelines","commit_id":"60ddc3e8c7a1d9cda44af59d924a923f35d127a4"},{"author":{"_account_id":16157,"name":"Ken Johnston","email":"kenny@kencjohnston.com","username":"kencjohnston"},"change_message_id":"ec150597bb3533bd4976cd68f6838a6fbd2ce967","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"``Domains`` are a high-level container for projects, users and groups. Each is"},{"line_number":79,"context_line":"owned by exactly one domain. Each domain defines a namespace where an"},{"line_number":80,"context_line":"API-visible name attribute exists. Keystone provides a default domain, aptly"},{"line_number":81,"context_line":"named \u0027Default\u0027."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"In the Identity v3 API, the uniqueness of attributes is as follows:"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3a461143_a86456e5","line":80,"in_reply_to":"3a461143_21c1c654","updated":"2017-02-01 22:59:00.000000000","message":"Even when starting a sentence? The rest of the document conforms to lowercase in all instances except when starting a sentence or as part of a title/header.","commit_id":"60ddc3e8c7a1d9cda44af59d924a923f35d127a4"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1fba1d35f2f8abff099bc3dfcedc234738edbec3","unresolved":false,"context_lines":[{"line_number":292,"context_line":""},{"line_number":293,"context_line":"In this model, users and groups are contained within domains and have a"},{"line_number":294,"context_line":"many-to-many relationship to projects. While most backends allow this relation"},{"line_number":295,"context_line":"to be in different domain, some may not."},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"Approach to CRUD"},{"line_number":298,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3a461143_d88e3778","line":295,"updated":"2017-01-30 17:35:13.000000000","message":"We could clarify the \"relation\" portion of this.\n\n  While most backends allow assignments to span across domains, some\n  may not.\n\n(shrug?)","commit_id":"60ddc3e8c7a1d9cda44af59d924a923f35d127a4"},{"author":{"_account_id":16157,"name":"Ken Johnston","email":"kenny@kencjohnston.com","username":"kencjohnston"},"change_message_id":"ec150597bb3533bd4976cd68f6838a6fbd2ce967","unresolved":false,"context_lines":[{"line_number":292,"context_line":""},{"line_number":293,"context_line":"In this model, users and groups are contained within domains and have a"},{"line_number":294,"context_line":"many-to-many relationship to projects. While most backends allow this relation"},{"line_number":295,"context_line":"to be in different domain, some may not."},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"Approach to CRUD"},{"line_number":298,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3a461143_88407a37","line":295,"in_reply_to":"3a461143_d88e3778","updated":"2017-02-01 22:59:00.000000000","message":"Done","commit_id":"60ddc3e8c7a1d9cda44af59d924a923f35d127a4"},{"author":{"_account_id":22604,"name":"Samuel Pilla","email":"sp516w@att.com","username":"samuel.pilla"},"change_message_id":"b5ae4fff36c58f76b9880d63253824735c2d02da","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"The Identity service provides auth credential validation and data about `users`"},{"line_number":39,"context_line":"and `groups`. In the basic case, this data is managed by the Identity service"},{"line_number":40,"context_line":"itself, allowing it to also handle all CRUD operations associated with this"},{"line_number":41,"context_line":"data. In more complex cases, the data is instead managed by an authoritative"},{"line_number":42,"context_line":"backend service. An example of this would be when the Identity service acts as"},{"line_number":43,"context_line":"a frontend for LDAP. In that case the LDAP server is the source of truth and the"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a461143_715ddceb","line":40,"range":{"start_line":40,"start_character":0,"end_line":40,"end_character":6},"updated":"2017-02-02 15:53:39.000000000","message":"excessive","commit_id":"f114d8de33826d10301be933997e2dd7a3a91007"},{"author":{"_account_id":16157,"name":"Ken Johnston","email":"kenny@kencjohnston.com","username":"kencjohnston"},"change_message_id":"514b27324091602d9eea19bc14a3bfc7b5e64f00","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"The Identity service provides auth credential validation and data about `users`"},{"line_number":39,"context_line":"and `groups`. In the basic case, this data is managed by the Identity service"},{"line_number":40,"context_line":"itself, allowing it to also handle all CRUD operations associated with this"},{"line_number":41,"context_line":"data. In more complex cases, the data is instead managed by an authoritative"},{"line_number":42,"context_line":"backend service. An example of this would be when the Identity service acts as"},{"line_number":43,"context_line":"a frontend for LDAP. In that case the LDAP server is the source of truth and the"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1a430d35_cd47971b","line":40,"range":{"start_line":40,"start_character":0,"end_line":40,"end_character":6},"in_reply_to":"3a461143_715ddceb","updated":"2017-02-06 21:15:06.000000000","message":"Nice. Fixed.","commit_id":"f114d8de33826d10301be933997e2dd7a3a91007"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"699260c8d0cbc1809cfa5561c8f99394e71fb963","unresolved":false,"context_lines":[{"line_number":290,"context_line":" * **Extras**: bucket of key-value metadata associated with a user-project pair."},{"line_number":291,"context_line":" * **Rule**: describes a set of requirements for performing an action."},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"In this model, users and groups are contained within domains and have a"},{"line_number":294,"context_line":"many-to-many relationship to projects. While most backends allow this assignment"},{"line_number":295,"context_line":"across domains, some may not."},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"Approach to CRUD"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a461143_25acf6ec","line":294,"range":{"start_line":293,"start_character":0,"end_line":294,"end_character":37},"updated":"2017-02-02 14:24:48.000000000","message":"I actually prefer the old version of this. It is more accurate.","commit_id":"f114d8de33826d10301be933997e2dd7a3a91007"},{"author":{"_account_id":22604,"name":"Samuel Pilla","email":"sp516w@att.com","username":"samuel.pilla"},"change_message_id":"b5ae4fff36c58f76b9880d63253824735c2d02da","unresolved":false,"context_lines":[{"line_number":290,"context_line":" * **Extras**: bucket of key-value metadata associated with a user-project pair."},{"line_number":291,"context_line":" * **Rule**: describes a set of requirements for performing an action."},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"In this model, users and groups are contained within domains and have a"},{"line_number":294,"context_line":"many-to-many relationship to projects. While most backends allow this assignment"},{"line_number":295,"context_line":"across domains, some may not."},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"Approach to CRUD"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a461143_f1ae2ce6","line":294,"range":{"start_line":293,"start_character":0,"end_line":294,"end_character":37},"in_reply_to":"3a461143_25acf6ec","updated":"2017-02-02 15:53:39.000000000","message":"++\nThough could change the \u0027;\u0027 to \u0027,\u0027 and \u0027take\nvarying levels of advantage of that functionality.\u0027 to \u0027take advantage of that functionality on varying levels.\u0027","commit_id":"f114d8de33826d10301be933997e2dd7a3a91007"},{"author":{"_account_id":16157,"name":"Ken Johnston","email":"kenny@kencjohnston.com","username":"kencjohnston"},"change_message_id":"514b27324091602d9eea19bc14a3bfc7b5e64f00","unresolved":false,"context_lines":[{"line_number":290,"context_line":" * **Extras**: bucket of key-value metadata associated with a user-project pair."},{"line_number":291,"context_line":" * **Rule**: describes a set of requirements for performing an action."},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"In this model, users and groups are contained within domains and have a"},{"line_number":294,"context_line":"many-to-many relationship to projects. While most backends allow this assignment"},{"line_number":295,"context_line":"across domains, some may not."},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"Approach to CRUD"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1a430d35_ed1b7319","line":294,"range":{"start_line":293,"start_character":0,"end_line":294,"end_character":37},"in_reply_to":"3a461143_25acf6ec","updated":"2017-02-06 21:15:06.000000000","message":"Done","commit_id":"f114d8de33826d10301be933997e2dd7a3a91007"},{"author":{"_account_id":16157,"name":"Ken Johnston","email":"kenny@kencjohnston.com","username":"kencjohnston"},"change_message_id":"514b27324091602d9eea19bc14a3bfc7b5e64f00","unresolved":false,"context_lines":[{"line_number":290,"context_line":" * **Extras**: bucket of key-value metadata associated with a user-project pair."},{"line_number":291,"context_line":" * **Rule**: describes a set of requirements for performing an action."},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"In this model, users and groups are contained within domains and have a"},{"line_number":294,"context_line":"many-to-many relationship to projects. While most backends allow this assignment"},{"line_number":295,"context_line":"across domains, some may not."},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"Approach to CRUD"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1a430d35_cd1cf715","line":294,"range":{"start_line":293,"start_character":0,"end_line":294,"end_character":37},"in_reply_to":"3a461143_f1ae2ce6","updated":"2017-02-06 21:15:06.000000000","message":"Done","commit_id":"f114d8de33826d10301be933997e2dd7a3a91007"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"699260c8d0cbc1809cfa5561c8f99394e71fb963","unresolved":false,"context_lines":[{"line_number":291,"context_line":" * **Rule**: describes a set of requirements for performing an action."},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"In this model, users and groups are contained within domains and have a"},{"line_number":294,"context_line":"many-to-many relationship to projects. While most backends allow this assignment"},{"line_number":295,"context_line":"across domains, some may not."},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"Approach to CRUD"},{"line_number":298,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a461143_655fde0e","line":295,"range":{"start_line":294,"start_character":39,"end_line":295,"end_character":29},"updated":"2017-02-02 14:24:48.000000000","message":"I don\u0027t get what this sentence is saying, is there a way you could rephrase it?","commit_id":"f114d8de33826d10301be933997e2dd7a3a91007"},{"author":{"_account_id":16157,"name":"Ken Johnston","email":"kenny@kencjohnston.com","username":"kencjohnston"},"change_message_id":"514b27324091602d9eea19bc14a3bfc7b5e64f00","unresolved":false,"context_lines":[{"line_number":291,"context_line":" * **Rule**: describes a set of requirements for performing an action."},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"In this model, users and groups are contained within domains and have a"},{"line_number":294,"context_line":"many-to-many relationship to projects. While most backends allow this assignment"},{"line_number":295,"context_line":"across domains, some may not."},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"Approach to CRUD"},{"line_number":298,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1a430d35_ad216b4f","line":295,"range":{"start_line":294,"start_character":39,"end_line":295,"end_character":29},"in_reply_to":"3a461143_655fde0e","updated":"2017-02-06 21:15:06.000000000","message":"Reverting to original with suggestions.","commit_id":"f114d8de33826d10301be933997e2dd7a3a91007"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"cacaa41c0c58e3cdc3b4495b64f69d1488a596d6","unresolved":false,"context_lines":[{"line_number":293,"context_line":" * **Extras**: bucket of key-value metadata associated with a user-project pair."},{"line_number":294,"context_line":" * **Rule**: describes a set of requirements for performing an action."},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"While the general data model allows a many-to-many relationship between users"},{"line_number":297,"context_line":"and groups to projects and domains; the actual backend implementations take"},{"line_number":298,"context_line":"varying levels of advantage of that functionality."},{"line_number":299,"context_line":""},{"line_number":300,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"1a430d35_f6d7bbea","side":"PARENT","line":297,"range":{"start_line":296,"start_character":0,"end_line":297,"end_character":34},"updated":"2017-02-07 01:56:18.000000000","message":"this is the correct sentence","commit_id":"7f2b7e58e74c79e5a09bd5c20e0de9c15d9eabd0"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"cf91e50bc8921bcfed95cffb8a5d4a1192500656","unresolved":false,"context_lines":[{"line_number":293,"context_line":" * **Extras**: bucket of key-value metadata associated with a user-project pair."},{"line_number":294,"context_line":" * **Rule**: describes a set of requirements for performing an action."},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"While the general data model allows a many-to-many relationship between users"},{"line_number":297,"context_line":"and groups to projects and domains; the actual backend implementations take"},{"line_number":298,"context_line":"varying levels of advantage of that functionality."},{"line_number":299,"context_line":""},{"line_number":300,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"5ff73747_e9ba6508","side":"PARENT","line":297,"range":{"start_line":296,"start_character":0,"end_line":297,"end_character":34},"in_reply_to":"1a430d35_f6d7bbea","updated":"2017-04-25 13:05:16.000000000","message":"I agree. This is more correct, the fact is that some backends just don\u0027t support multiple domains (such as LDAP) thus they can\u0027t support many-to-many since there is just one domain! (default)","commit_id":"7f2b7e58e74c79e5a09bd5c20e0de9c15d9eabd0"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"cacaa41c0c58e3cdc3b4495b64f69d1488a596d6","unresolved":false,"context_lines":[{"line_number":290,"context_line":" * **Extras**: bucket of key-value metadata associated with a user-project pair."},{"line_number":291,"context_line":" * **Rule**: describes a set of requirements for performing an action."},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"In this model, users and groups are contained within domains and have a"},{"line_number":294,"context_line":"many-to-many relationship to projects. While most backends allow this assignment"},{"line_number":295,"context_line":"across domains, some may not."},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"Approach to CRUD"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1a430d35_7602eb70","line":294,"range":{"start_line":293,"start_character":0,"end_line":294,"end_character":37},"updated":"2017-02-07 01:56:18.000000000","message":"this is not: notice the many-to-many relationship from users/groups to domains is not described.","commit_id":"bc21dcb611c34890d20faa911c82035be04954e6"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"de2b9a3897ce170286c0f7c88e9244dd521eb577","unresolved":false,"context_lines":[{"line_number":291,"context_line":" * **Rule**: describes a set of requirements for performing an action."},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"In this model, users and groups are contained within domains and have a"},{"line_number":294,"context_line":"many-to-many relationship to projects. While most backends allow this assignment"},{"line_number":295,"context_line":"across domains, some may not."},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"Approach to CRUD"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1a430d35_20a7d4bd","line":294,"in_reply_to":"1a430d35_7602eb70","updated":"2017-02-08 23:15:33.000000000","message":"You just want to make sure we include a statement that says users can belong to multiple domains, too? I feel like that is addressed in the second sentence, which explicitly calls out that behavior with domains.","commit_id":"bc21dcb611c34890d20faa911c82035be04954e6"}]}
