)]}'
{"doc/source/api_change_tutorial.rst":[{"author":{"_account_id":19985,"name":"Ryosuke Mizuno","email":"r-mizuno@rs.jp.nec.com","username":"r-mizuno"},"change_message_id":"a3533a848660902c21435ca9fbcd1056b54c8990","unresolved":false,"context_lines":[{"line_number":63,"context_line":"In this section, let\u0027s assume that a specification proposing the addition of a"},{"line_number":64,"context_line":"`description` field to roles was accepted. In the next subsections, you will"},{"line_number":65,"context_line":"find a detailed explanation on the needed code changes to the keystone code to"},{"line_number":66,"context_line":"implementh such change."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Architectural Recapitulation"},{"line_number":69,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a061dce_120e6ce4","line":66,"range":{"start_line":66,"start_character":0,"end_line":66,"end_character":10},"updated":"2016-04-08 00:56:43.000000000","message":"implement?","commit_id":"3d3f9b1afba83e3ca0462a69646f527335c7485b"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"ca1824ada3adaa1604f9d8cdaa4c31bbf8676359","unresolved":false,"context_lines":[{"line_number":63,"context_line":"In this section, let\u0027s assume that a specification proposing the addition of a"},{"line_number":64,"context_line":"`description` field to roles was accepted. In the next subsections, you will"},{"line_number":65,"context_line":"find a detailed explanation on the needed code changes to the keystone code to"},{"line_number":66,"context_line":"implementh such change."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Architectural Recapitulation"},{"line_number":69,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a061dce_8f6cfb37","line":66,"range":{"start_line":66,"start_character":0,"end_line":66,"end_character":10},"in_reply_to":"9a061dce_120e6ce4","updated":"2016-04-08 12:38:44.000000000","message":"Done","commit_id":"3d3f9b1afba83e3ca0462a69646f527335c7485b"},{"author":{"_account_id":19985,"name":"Ryosuke Mizuno","email":"r-mizuno@rs.jp.nec.com","username":"r-mizuno"},"change_message_id":"a3533a848660902c21435ca9fbcd1056b54c8990","unresolved":false,"context_lines":[{"line_number":69,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"As you saw in the `architecture`_ document, there are four logical levels of"},{"line_number":72,"context_line":"code at which a sucessful request calls: router, controller, manager and"},{"line_number":73,"context_line":"driver."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"For the role backend, they can be found in the directory keystone/assignment,"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a061dce_f25938fe","line":72,"range":{"start_line":72,"start_character":16,"end_line":72,"end_character":25},"updated":"2016-04-08 00:56:43.000000000","message":"successful","commit_id":"3d3f9b1afba83e3ca0462a69646f527335c7485b"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"ca1824ada3adaa1604f9d8cdaa4c31bbf8676359","unresolved":false,"context_lines":[{"line_number":69,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"As you saw in the `architecture`_ document, there are four logical levels of"},{"line_number":72,"context_line":"code at which a sucessful request calls: router, controller, manager and"},{"line_number":73,"context_line":"driver."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"For the role backend, they can be found in the directory keystone/assignment,"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a061dce_2f87afd8","line":72,"range":{"start_line":72,"start_character":16,"end_line":72,"end_character":25},"in_reply_to":"9a061dce_f25938fe","updated":"2016-04-08 12:38:44.000000000","message":"Done","commit_id":"3d3f9b1afba83e3ca0462a69646f527335c7485b"},{"author":{"_account_id":19985,"name":"Ryosuke Mizuno","email":"r-mizuno@rs.jp.nec.com","username":"r-mizuno"},"change_message_id":"a3533a848660902c21435ca9fbcd1056b54c8990","unresolved":false,"context_lines":[{"line_number":146,"context_line":""},{"line_number":147,"context_line":"At this point, keystone role entities contain a `description` attribute. In"},{"line_number":148,"context_line":"order to make it happen, you have learned how the keystone architecture is,"},{"line_number":149,"context_line":"what is the responsability of each layer, how database migrations occur and the"},{"line_number":150,"context_line":"way entities are represented into tables."},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"The pattern of the change made in this tutorial applies to other keystone"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a061dce_d2d2345b","line":149,"range":{"start_line":149,"start_character":12,"end_line":149,"end_character":26},"updated":"2016-04-08 00:56:43.000000000","message":"responsibility","commit_id":"3d3f9b1afba83e3ca0462a69646f527335c7485b"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"ca1824ada3adaa1604f9d8cdaa4c31bbf8676359","unresolved":false,"context_lines":[{"line_number":146,"context_line":""},{"line_number":147,"context_line":"At this point, keystone role entities contain a `description` attribute. In"},{"line_number":148,"context_line":"order to make it happen, you have learned how the keystone architecture is,"},{"line_number":149,"context_line":"what is the responsability of each layer, how database migrations occur and the"},{"line_number":150,"context_line":"way entities are represented into tables."},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"The pattern of the change made in this tutorial applies to other keystone"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a061dce_2f104fa8","line":149,"range":{"start_line":149,"start_character":12,"end_line":149,"end_character":26},"in_reply_to":"9a061dce_d2d2345b","updated":"2016-04-08 12:38:44.000000000","message":"Done","commit_id":"3d3f9b1afba83e3ca0462a69646f527335c7485b"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"4b8ea1be375f265d1661975029ab770c5554b253","unresolved":false,"context_lines":[{"line_number":15,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"This document will guide you through the process of proposing and submitting"},{"line_number":18,"context_line":"and API change in keystone."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Prerequisites"},{"line_number":21,"context_line":"-------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a1b2928_bce2b701","line":18,"range":{"start_line":18,"start_character":0,"end_line":18,"end_character":4},"updated":"2016-04-11 19:14:47.000000000","message":"an*","commit_id":"551f6272c8651ce4ff1639858234a2d81b281d47"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"b1677813cf982f635e588d70efa69f76cbf5bd03","unresolved":false,"context_lines":[{"line_number":15,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"This document will guide you through the process of proposing and submitting"},{"line_number":18,"context_line":"and API change in keystone."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Prerequisites"},{"line_number":21,"context_line":"-------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5a18252c_243ca0c7","line":18,"range":{"start_line":18,"start_character":0,"end_line":18,"end_character":4},"in_reply_to":"7a1b2928_bce2b701","updated":"2016-04-13 14:09:05.000000000","message":"Done","commit_id":"551f6272c8651ce4ff1639858234a2d81b281d47"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"4b8ea1be375f265d1661975029ab770c5554b253","unresolved":false,"context_lines":[{"line_number":26,"context_line":".. _`developer guide`: http://docs.openstack.org/developer/keystone/developing.html"},{"line_number":27,"context_line":".. _`architecture`: http://docs.openstack.org/developer/keystone/architecture.html"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Proposing a change"},{"line_number":30,"context_line":"------------------"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"You need to submit a specification against the `keystone-specs`_ repository and"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a1b2928_5cc9e377","line":29,"range":{"start_line":29,"start_character":10,"end_line":29,"end_character":18},"updated":"2016-04-11 19:14:47.000000000","message":"think \"a feature\" is more accurate in this case","commit_id":"551f6272c8651ce4ff1639858234a2d81b281d47"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"e41b59377d5e2f77078e7d4652bc570600ded7bc","unresolved":false,"context_lines":[{"line_number":26,"context_line":".. _`developer guide`: http://docs.openstack.org/developer/keystone/developing.html"},{"line_number":27,"context_line":".. _`architecture`: http://docs.openstack.org/developer/keystone/architecture.html"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Proposing a change"},{"line_number":30,"context_line":"------------------"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"You need to submit a specification against the `keystone-specs`_ repository and"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5a18252c_87cbf61d","line":29,"range":{"start_line":29,"start_character":10,"end_line":29,"end_character":18},"in_reply_to":"5a18252c_64c0587c","updated":"2016-04-13 14:19:33.000000000","message":"True, maybe use \"API change\" here too - otherwise it may confuse ppl that any change needs to follow this process","commit_id":"551f6272c8651ce4ff1639858234a2d81b281d47"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"b1677813cf982f635e588d70efa69f76cbf5bd03","unresolved":false,"context_lines":[{"line_number":26,"context_line":".. _`developer guide`: http://docs.openstack.org/developer/keystone/developing.html"},{"line_number":27,"context_line":".. _`architecture`: http://docs.openstack.org/developer/keystone/architecture.html"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Proposing a change"},{"line_number":30,"context_line":"------------------"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"You need to submit a specification against the `keystone-specs`_ repository and"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5a18252c_64c0587c","line":29,"range":{"start_line":29,"start_character":10,"end_line":29,"end_character":18},"in_reply_to":"7a1b2928_5cc9e377","updated":"2016-04-13 14:09:05.000000000","message":"We are talking about API change all over the document","commit_id":"551f6272c8651ce4ff1639858234a2d81b281d47"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"4b8ea1be375f265d1661975029ab770c5554b253","unresolved":false,"context_lines":[{"line_number":29,"context_line":"Proposing a change"},{"line_number":30,"context_line":"------------------"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"You need to submit a specification against the `keystone-specs`_ repository and"},{"line_number":33,"context_line":"bring it up to discussion with the `keystone core team`_ for agreement."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":".. _`keystone-specs`: https://git.openstack.org/cgit/openstack/keystone-specs/"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a1b2928_1c964b4c","line":32,"range":{"start_line":32,"start_character":21,"end_line":32,"end_character":34},"updated":"2016-04-11 19:14:47.000000000","message":"think it also needs the \"create blueprint\" step?","commit_id":"551f6272c8651ce4ff1639858234a2d81b281d47"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"b1677813cf982f635e588d70efa69f76cbf5bd03","unresolved":false,"context_lines":[{"line_number":29,"context_line":"Proposing a change"},{"line_number":30,"context_line":"------------------"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"You need to submit a specification against the `keystone-specs`_ repository and"},{"line_number":33,"context_line":"bring it up to discussion with the `keystone core team`_ for agreement."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":".. _`keystone-specs`: https://git.openstack.org/cgit/openstack/keystone-specs/"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5a18252c_840934e0","line":32,"range":{"start_line":32,"start_character":21,"end_line":32,"end_character":34},"in_reply_to":"7a1b2928_1c964b4c","updated":"2016-04-13 14:09:05.000000000","message":"Sure, will add","commit_id":"551f6272c8651ce4ff1639858234a2d81b281d47"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"4b8ea1be375f265d1661975029ab770c5554b253","unresolved":false,"context_lines":[{"line_number":61,"context_line":"---------------------"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"In this section, let\u0027s assume that a specification proposing the addition of a"},{"line_number":64,"context_line":"`description` field to roles was accepted. In the next subsections, you will"},{"line_number":65,"context_line":"find a detailed explanation on the needed code changes to the keystone code to"},{"line_number":66,"context_line":"implement such change."},{"line_number":67,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a1b2928_3c9d0766","line":64,"range":{"start_line":64,"start_character":20,"end_line":64,"end_character":28},"updated":"2016-04-11 19:14:47.000000000","message":"s/to roles/to the roles API","commit_id":"551f6272c8651ce4ff1639858234a2d81b281d47"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"b1677813cf982f635e588d70efa69f76cbf5bd03","unresolved":false,"context_lines":[{"line_number":61,"context_line":"---------------------"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"In this section, let\u0027s assume that a specification proposing the addition of a"},{"line_number":64,"context_line":"`description` field to roles was accepted. In the next subsections, you will"},{"line_number":65,"context_line":"find a detailed explanation on the needed code changes to the keystone code to"},{"line_number":66,"context_line":"implement such change."},{"line_number":67,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5a18252c_e4f468f3","line":64,"range":{"start_line":64,"start_character":20,"end_line":64,"end_character":28},"in_reply_to":"7a1b2928_3c9d0766","updated":"2016-04-13 14:09:05.000000000","message":"Done","commit_id":"551f6272c8651ce4ff1639858234a2d81b281d47"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"4b8ea1be375f265d1661975029ab770c5554b253","unresolved":false,"context_lines":[{"line_number":69,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"As you saw in the `architecture`_ document, there are four logical levels of"},{"line_number":72,"context_line":"code at which a successful request calls: router, controller, manager and"},{"line_number":73,"context_line":"driver."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"For the role backend, they can be found in the directory `keystone/assignment`,"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a1b2928_7c949f36","line":72,"range":{"start_line":72,"start_character":35,"end_line":72,"end_character":40},"updated":"2016-04-11 19:14:47.000000000","message":"\"is called\" sounds better to me","commit_id":"551f6272c8651ce4ff1639858234a2d81b281d47"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"b1677813cf982f635e588d70efa69f76cbf5bd03","unresolved":false,"context_lines":[{"line_number":69,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"As you saw in the `architecture`_ document, there are four logical levels of"},{"line_number":72,"context_line":"code at which a successful request calls: router, controller, manager and"},{"line_number":73,"context_line":"driver."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"For the role backend, they can be found in the directory `keystone/assignment`,"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5a18252c_841654a5","line":72,"range":{"start_line":72,"start_character":35,"end_line":72,"end_character":40},"in_reply_to":"7a1b2928_7c949f36","updated":"2016-04-13 14:09:05.000000000","message":"in this case the request triggers the call of those 4 levels, and not the opposite, so the request \u0027calls\u0027, and not \u0027is called\u0027. That\u0027s how I see it","commit_id":"551f6272c8651ce4ff1639858234a2d81b281d47"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"4b8ea1be375f265d1661975029ab770c5554b253","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"Now, when keystone runs, the table will be created with the new attribute."},{"line_number":92,"context_line":"However, what about existing deployments which already have the role table"},{"line_number":93,"context_line":"created ? You need to migrate their database schema!"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"The directory `keystone/common/sql/migrate_repo/versions` owns all the"},{"line_number":96,"context_line":"migrations since keystone day 1. Create a new file there with the next"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a1b2928_3cab4776","line":93,"range":{"start_line":93,"start_character":7,"end_line":93,"end_character":8},"updated":"2016-04-11 19:14:47.000000000","message":"extra space","commit_id":"551f6272c8651ce4ff1639858234a2d81b281d47"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"b1677813cf982f635e588d70efa69f76cbf5bd03","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"Now, when keystone runs, the table will be created with the new attribute."},{"line_number":92,"context_line":"However, what about existing deployments which already have the role table"},{"line_number":93,"context_line":"created ? You need to migrate their database schema!"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"The directory `keystone/common/sql/migrate_repo/versions` owns all the"},{"line_number":96,"context_line":"migrations since keystone day 1. Create a new file there with the next"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5a18252c_44b6fc3d","line":93,"range":{"start_line":93,"start_character":7,"end_line":93,"end_character":8},"in_reply_to":"7a1b2928_3cab4776","updated":"2016-04-13 14:09:05.000000000","message":"Done","commit_id":"551f6272c8651ce4ff1639858234a2d81b281d47"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"3144a23aadb1b1a4e28df939c5ec593b9bad7685","unresolved":false,"context_lines":[{"line_number":105,"context_line":"          description \u003d sql.Column(\u0027description\u0027, sql.String(255),"},{"line_number":106,"context_line":"                                   nullable\u003dTrue)"},{"line_number":107,"context_line":"          role_table.create_column(description)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"Do not forget to add tests for your migration at"},{"line_number":110,"context_line":"`keystone/tests/unit/test_sql_upgrade.py`, you may take other tests as example"},{"line_number":111,"context_line":"and learn how to develop yours. In this case, you would need to upgrade to"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a061dce_b39f9c4f","line":108,"updated":"2016-04-08 16:00:05.000000000","message":"A question I had/still have is why are there a bunch of *_placeholder.py migrations in this directory, and when (if ever) someone would want to add one or change one to have content.","commit_id":"551f6272c8651ce4ff1639858234a2d81b281d47"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"182ff1c70dbd26a32037ca094a98100d4ce2294b","unresolved":false,"context_lines":[{"line_number":105,"context_line":"          description \u003d sql.Column(\u0027description\u0027, sql.String(255),"},{"line_number":106,"context_line":"                                   nullable\u003dTrue)"},{"line_number":107,"context_line":"          role_table.create_column(description)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"Do not forget to add tests for your migration at"},{"line_number":110,"context_line":"`keystone/tests/unit/test_sql_upgrade.py`, you may take other tests as example"},{"line_number":111,"context_line":"and learn how to develop yours. In this case, you would need to upgrade to"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a1b2928_f18298ff","line":108,"in_reply_to":"9a061dce_b39f9c4f","updated":"2016-04-11 18:51:00.000000000","message":"They are reserved for backports. As soon as we cut out a release, we add them. When a migraiton needs to be backported, it takes the first placeholder spot available.","commit_id":"551f6272c8651ce4ff1639858234a2d81b281d47"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"3144a23aadb1b1a4e28df939c5ec593b9bad7685","unresolved":false,"context_lines":[{"line_number":120,"context_line":"back to controller. Additionally, it handles the cache management."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"Thus, there is no manager change needed to make it able to operate role"},{"line_number":123,"context_line":"entities with the new `description` attribute."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"However, you should add tests for the role CRUD operations with the new"},{"line_number":126,"context_line":"attribute to `keystone/tests/unit/assignment/test_core.py`."}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a061dce_b3c67c47","line":123,"updated":"2016-04-08 16:00:05.000000000","message":"Maybe give an example of an API change that would require a change in the manager?","commit_id":"551f6272c8651ce4ff1639858234a2d81b281d47"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"182ff1c70dbd26a32037ca094a98100d4ce2294b","unresolved":false,"context_lines":[{"line_number":120,"context_line":"back to controller. Additionally, it handles the cache management."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"Thus, there is no manager change needed to make it able to operate role"},{"line_number":123,"context_line":"entities with the new `description` attribute."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"However, you should add tests for the role CRUD operations with the new"},{"line_number":126,"context_line":"attribute to `keystone/tests/unit/assignment/test_core.py`."}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a1b2928_b18f8022","line":123,"in_reply_to":"9a061dce_b3c67c47","updated":"2016-04-11 18:51:00.000000000","message":"Sure, just not sure we can do it without requiring to implement a totally new API","commit_id":"551f6272c8651ce4ff1639858234a2d81b281d47"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"3144a23aadb1b1a4e28df939c5ec593b9bad7685","unresolved":false,"context_lines":[{"line_number":133,"context_line":"from the manager. Thus, there is no change needed at the controller level."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"In addition, as role entities are passed in the request body to keystone calls,"},{"line_number":136,"context_line":"the role routes do not need to be changed; i.e the routes still are::"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"      POST /v3/roles"},{"line_number":139,"context_line":"      GET /v3/roles/{id}"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a061dce_b3f4bc87","line":136,"updated":"2016-04-08 16:00:05.000000000","message":"Maybe give an example of an API change that would require a change in the controller or router?","commit_id":"551f6272c8651ce4ff1639858234a2d81b281d47"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"182ff1c70dbd26a32037ca094a98100d4ce2294b","unresolved":false,"context_lines":[{"line_number":133,"context_line":"from the manager. Thus, there is no change needed at the controller level."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"In addition, as role entities are passed in the request body to keystone calls,"},{"line_number":136,"context_line":"the role routes do not need to be changed; i.e the routes still are::"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"      POST /v3/roles"},{"line_number":139,"context_line":"      GET /v3/roles/{id}"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a1b2928_d19e7c55","line":136,"in_reply_to":"9a061dce_b3f4bc87","updated":"2016-04-11 18:51:00.000000000","message":"Same as above","commit_id":"551f6272c8651ce4ff1639858234a2d81b281d47"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"91167bdd8e1ee9fac93be7c022c534c1d057857d","unresolved":false,"context_lines":[{"line_number":39,"context_line":"Create"},{"line_number":40,"context_line":"~~~~~~"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"#. `Create a blueprint` in launchpad ;"},{"line_number":43,"context_line":"#. git clone https://git.openstack.org/openstack/keystone-specs ;"},{"line_number":44,"context_line":"#. Use the provided `template`_ ;"},{"line_number":45,"context_line":"#. Push to gerrit for review ;"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5a18252c_1551d062","line":42,"updated":"2016-04-13 14:42:16.000000000","message":"nit: the extra space before the ; looks a bit odd in the compiled doc (same for the other lines below)","commit_id":"733cb1f54b26367815a98b1c26fa3b5dc6d5c098"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"eafeaa9b672a42761395885f562c8112e542170d","unresolved":false,"context_lines":[{"line_number":39,"context_line":"Create"},{"line_number":40,"context_line":"~~~~~~"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"#. `Create a blueprint` in launchpad ;"},{"line_number":43,"context_line":"#. git clone https://git.openstack.org/openstack/keystone-specs ;"},{"line_number":44,"context_line":"#. Use the provided `template`_ ;"},{"line_number":45,"context_line":"#. Push to gerrit for review ;"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dab17558_3687fd13","line":42,"in_reply_to":"5a18252c_1551d062","updated":"2016-05-12 20:45:30.000000000","message":"Done","commit_id":"733cb1f54b26367815a98b1c26fa3b5dc6d5c098"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"3506f3e6f7501881d804c1d2713eecf0bd895bf4","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"#. `Create a blueprint` in launchpad ;"},{"line_number":43,"context_line":"#. git clone https://git.openstack.org/openstack/keystone-specs ;"},{"line_number":44,"context_line":"#. Use the provided `template`_ ;"},{"line_number":45,"context_line":"#. Push to gerrit for review ;"},{"line_number":46,"context_line":"#. Propose agenda items to the `keystone meeting`_, and make sure someone"},{"line_number":47,"context_line":"   who understands the subject can attend the meeting to answer questions."}],"source_content_type":"text/x-rst","patch_set":4,"id":"dab17558_3c7d21e8","line":44,"updated":"2016-05-12 18:04:36.000000000","message":"cp specs/template.rst specs/backloga/\u003cfeature\u003e.rst\n\nensure the BP points to the one created in step 1\n\n\nalso edit the API doc in (path..) to show the effect of the new change, and make sure you bump the version number etc.\n\n\nI don\u0027t like that part of it, but it is \\what we have to do now.","commit_id":"733cb1f54b26367815a98b1c26fa3b5dc6d5c098"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"eafeaa9b672a42761395885f562c8112e542170d","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"#. `Create a blueprint` in launchpad ;"},{"line_number":43,"context_line":"#. git clone https://git.openstack.org/openstack/keystone-specs ;"},{"line_number":44,"context_line":"#. Use the provided `template`_ ;"},{"line_number":45,"context_line":"#. Push to gerrit for review ;"},{"line_number":46,"context_line":"#. Propose agenda items to the `keystone meeting`_, and make sure someone"},{"line_number":47,"context_line":"   who understands the subject can attend the meeting to answer questions."}],"source_content_type":"text/x-rst","patch_set":4,"id":"dab17558_2c87aa13","line":44,"in_reply_to":"dab17558_3c7d21e8","updated":"2016-05-12 20:45:30.000000000","message":"Done","commit_id":"733cb1f54b26367815a98b1c26fa3b5dc6d5c098"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"eafeaa9b672a42761395885f562c8112e542170d","unresolved":false,"context_lines":[{"line_number":79,"context_line":"in the following paths, respectively: `routers.py`, `controllers.py`, `core.py`"},{"line_number":80,"context_line":"and `role_backends/sql.py` (currently only the SQL driver is supported)."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"Changing the Model"},{"line_number":83,"context_line":"~~~~~~~~~~~~~~~~~~"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"First, you need to change the role model to include the description attribute."}],"source_content_type":"text/x-rst","patch_set":4,"id":"dab17558_aaf41a87","line":82,"range":{"start_line":82,"start_character":0,"end_line":82,"end_character":18},"updated":"2016-05-12 20:45:30.000000000","message":"This needs to talk about the drivers too","commit_id":"733cb1f54b26367815a98b1c26fa3b5dc6d5c098"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"3506f3e6f7501881d804c1d2713eecf0bd895bf4","unresolved":false,"context_lines":[{"line_number":120,"context_line":"Managers handle the business logic. Keystone provides the basic CRUD for role"},{"line_number":121,"context_line":"entities, that means that the role manager simply calls the driver with the"},{"line_number":122,"context_line":"arguments received from the controller, and then returns the driver\u0027s result"},{"line_number":123,"context_line":"back to controller. Additionally, it handles the cache management."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Thus, there is no manager change needed to make it able to operate role"},{"line_number":126,"context_line":"entities with the new `description` attribute."}],"source_content_type":"text/x-rst","patch_set":4,"id":"dab17558_1c4e5dc1","line":123,"updated":"2016-05-12 18:04:36.000000000","message":"\"when trying to determine whether a change goes in driver or manager, the test is whether the code needs to be exectued for each driver. Common logic goes in the manager, backend specific logic goes in the driver.\"","commit_id":"733cb1f54b26367815a98b1c26fa3b5dc6d5c098"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"eafeaa9b672a42761395885f562c8112e542170d","unresolved":false,"context_lines":[{"line_number":120,"context_line":"Managers handle the business logic. Keystone provides the basic CRUD for role"},{"line_number":121,"context_line":"entities, that means that the role manager simply calls the driver with the"},{"line_number":122,"context_line":"arguments received from the controller, and then returns the driver\u0027s result"},{"line_number":123,"context_line":"back to controller. Additionally, it handles the cache management."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Thus, there is no manager change needed to make it able to operate role"},{"line_number":126,"context_line":"entities with the new `description` attribute."}],"source_content_type":"text/x-rst","patch_set":4,"id":"dab17558_8cfe9636","line":123,"in_reply_to":"dab17558_1c4e5dc1","updated":"2016-05-12 20:45:30.000000000","message":"Done","commit_id":"733cb1f54b26367815a98b1c26fa3b5dc6d5c098"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"eafeaa9b672a42761395885f562c8112e542170d","unresolved":false,"context_lines":[{"line_number":128,"context_line":"However, you should add tests for the role CRUD operations with the new"},{"line_number":129,"context_line":"attribute to `keystone/tests/unit/assignment/test_core.py`."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Changing the Controller and Router"},{"line_number":132,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"The controller is in charge of calling the appropriate manager call and wrap"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dab17558_2a2f8af7","line":131,"range":{"start_line":131,"start_character":0,"end_line":131,"end_character":34},"updated":"2016-05-12 20:45:30.000000000","message":"This section needs to talk about JSON schemas and show how to update them","commit_id":"733cb1f54b26367815a98b1c26fa3b5dc6d5c098"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"3506f3e6f7501881d804c1d2713eecf0bd895bf4","unresolved":false,"context_lines":[{"line_number":131,"context_line":"Changing the Controller and Router"},{"line_number":132,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"The controller is in charge of calling the appropriate manager call and wrap"},{"line_number":135,"context_line":"responses into HTTP format. It passes and accepts all the attributes to and"},{"line_number":136,"context_line":"from the manager. Thus, there is no change needed at the controller level."},{"line_number":137,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"dab17558_dcda15e9","line":134,"updated":"2016-05-12 18:04:36.000000000","message":"\"Business logic should not go in the controller.  THe controller should be viewed as a binding between the Business logic and the HTTP protocol.  Logic is often called from other controllers or Managers, and that logic should not be duplicated, thus should be in the Mananger.\"","commit_id":"733cb1f54b26367815a98b1c26fa3b5dc6d5c098"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"eafeaa9b672a42761395885f562c8112e542170d","unresolved":false,"context_lines":[{"line_number":131,"context_line":"Changing the Controller and Router"},{"line_number":132,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"The controller is in charge of calling the appropriate manager call and wrap"},{"line_number":135,"context_line":"responses into HTTP format. It passes and accepts all the attributes to and"},{"line_number":136,"context_line":"from the manager. Thus, there is no change needed at the controller level."},{"line_number":137,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"dab17558_ecfbe245","line":134,"in_reply_to":"dab17558_dcda15e9","updated":"2016-05-12 20:45:30.000000000","message":"Done","commit_id":"733cb1f54b26367815a98b1c26fa3b5dc6d5c098"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a921ca102a582f8c2c47b0a94ff702e35634f8a0","unresolved":false,"context_lines":[{"line_number":39,"context_line":"Create"},{"line_number":40,"context_line":"~~~~~~"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"#. `Create a blueprint` in launchpad;"},{"line_number":43,"context_line":"#. git clone https://git.openstack.org/openstack/keystone-specs;"},{"line_number":44,"context_line":"#. cp specs/template.rst specs/backlog/\u003cfeature\u003e.rst;"},{"line_number":45,"context_line":"#. Write the spec based on the template. Ensure the BP link points to the one"}],"source_content_type":"text/x-rst","patch_set":5,"id":"dab17558_09a8c1da","line":42,"range":{"start_line":42,"start_character":3,"end_line":42,"end_character":23},"updated":"2016-05-13 07:55:51.000000000","message":"make this link somewhere: https://blueprints.launchpad.net/keystone/+addspec","commit_id":"cb2361485ac95ac6bfe41bfa684bfbbd3b95fced"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"7b1acfc49b1188f8a3c698f4542b0014bc04c199","unresolved":false,"context_lines":[{"line_number":39,"context_line":"Create"},{"line_number":40,"context_line":"~~~~~~"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"#. `Create a blueprint` in launchpad;"},{"line_number":43,"context_line":"#. git clone https://git.openstack.org/openstack/keystone-specs;"},{"line_number":44,"context_line":"#. cp specs/template.rst specs/backlog/\u003cfeature\u003e.rst;"},{"line_number":45,"context_line":"#. Write the spec based on the template. Ensure the BP link points to the one"}],"source_content_type":"text/x-rst","patch_set":5,"id":"dab17558_bd772f01","line":42,"range":{"start_line":42,"start_character":3,"end_line":42,"end_character":23},"in_reply_to":"dab17558_09a8c1da","updated":"2016-05-13 09:37:12.000000000","message":"It was supposed to be a link, but I forgot to add a _ at the end, nice catch :)","commit_id":"cb2361485ac95ac6bfe41bfa684bfbbd3b95fced"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a921ca102a582f8c2c47b0a94ff702e35634f8a0","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"#. `Create a blueprint` in launchpad;"},{"line_number":43,"context_line":"#. git clone https://git.openstack.org/openstack/keystone-specs;"},{"line_number":44,"context_line":"#. cp specs/template.rst specs/backlog/\u003cfeature\u003e.rst;"},{"line_number":45,"context_line":"#. Write the spec based on the template. Ensure the BP link points to the one"},{"line_number":46,"context_line":"   created in step 1;"},{"line_number":47,"context_line":"#. Also update the documentation at api/v3/identity-api-v3.rst to reflect the"}],"source_content_type":"text/x-rst","patch_set":5,"id":"dab17558_49aac9d3","line":44,"range":{"start_line":44,"start_character":6,"end_line":44,"end_character":53},"updated":"2016-05-13 07:55:51.000000000","message":"put this in backticks","commit_id":"cb2361485ac95ac6bfe41bfa684bfbbd3b95fced"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"7b1acfc49b1188f8a3c698f4542b0014bc04c199","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"#. `Create a blueprint` in launchpad;"},{"line_number":43,"context_line":"#. git clone https://git.openstack.org/openstack/keystone-specs;"},{"line_number":44,"context_line":"#. cp specs/template.rst specs/backlog/\u003cfeature\u003e.rst;"},{"line_number":45,"context_line":"#. Write the spec based on the template. Ensure the BP link points to the one"},{"line_number":46,"context_line":"   created in step 1;"},{"line_number":47,"context_line":"#. Also update the documentation at api/v3/identity-api-v3.rst to reflect the"}],"source_content_type":"text/x-rst","patch_set":5,"id":"dab17558_9d722b10","line":44,"range":{"start_line":44,"start_character":6,"end_line":44,"end_character":53},"in_reply_to":"dab17558_49aac9d3","updated":"2016-05-13 09:37:12.000000000","message":"Done","commit_id":"cb2361485ac95ac6bfe41bfa684bfbbd3b95fced"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a921ca102a582f8c2c47b0a94ff702e35634f8a0","unresolved":false,"context_lines":[{"line_number":44,"context_line":"#. cp specs/template.rst specs/backlog/\u003cfeature\u003e.rst;"},{"line_number":45,"context_line":"#. Write the spec based on the template. Ensure the BP link points to the one"},{"line_number":46,"context_line":"   created in step 1;"},{"line_number":47,"context_line":"#. Also update the documentation at api/v3/identity-api-v3.rst to reflect the"},{"line_number":48,"context_line":"   proposed API changes;"},{"line_number":49,"context_line":"#. Push to gerrit for review;"},{"line_number":50,"context_line":"#. Propose agenda items to the `keystone meeting`_, and make sure someone"}],"source_content_type":"text/x-rst","patch_set":5,"id":"dab17558_89b4b135","line":47,"range":{"start_line":47,"start_character":36,"end_line":47,"end_character":62},"updated":"2016-05-13 07:55:51.000000000","message":"also put this in backticks","commit_id":"cb2361485ac95ac6bfe41bfa684bfbbd3b95fced"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"7b1acfc49b1188f8a3c698f4542b0014bc04c199","unresolved":false,"context_lines":[{"line_number":44,"context_line":"#. cp specs/template.rst specs/backlog/\u003cfeature\u003e.rst;"},{"line_number":45,"context_line":"#. Write the spec based on the template. Ensure the BP link points to the one"},{"line_number":46,"context_line":"   created in step 1;"},{"line_number":47,"context_line":"#. Also update the documentation at api/v3/identity-api-v3.rst to reflect the"},{"line_number":48,"context_line":"   proposed API changes;"},{"line_number":49,"context_line":"#. Push to gerrit for review;"},{"line_number":50,"context_line":"#. Propose agenda items to the `keystone meeting`_, and make sure someone"}],"source_content_type":"text/x-rst","patch_set":5,"id":"dab17558_dd62f33c","line":47,"range":{"start_line":47,"start_character":36,"end_line":47,"end_character":62},"in_reply_to":"dab17558_89b4b135","updated":"2016-05-13 09:37:12.000000000","message":"Done","commit_id":"cb2361485ac95ac6bfe41bfa684bfbbd3b95fced"}]}
