)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"f997db482a8e6e98f70226920cfd9bb564fbab4e","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Create, update and delete hierarchical projects"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Changes at basic operations related to projects"},{"line_number":10,"context_line":"were modified to handle projects hierarchy."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This changes includes:"},{"line_number":13,"context_line":"- Create and update projects with parent_project_id"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"1abeadc6_0d721b11","line":10,"updated":"2014-08-26 18:36:12.000000000","message":"Changes were modified?","commit_id":"7879737977ac7aceb8b65680829b133c0c9bc654"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"f997db482a8e6e98f70226920cfd9bb564fbab4e","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Changes at basic operations related to projects"},{"line_number":10,"context_line":"were modified to handle projects hierarchy."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This changes includes:"},{"line_number":13,"context_line":"- Create and update projects with parent_project_id"},{"line_number":14,"context_line":"  field"},{"line_number":15,"context_line":"- Avoid deleting projects that are not leaf in the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"1abeadc6_6d5aaf84","line":12,"updated":"2014-08-26 18:36:12.000000000","message":"These changes include","commit_id":"7879737977ac7aceb8b65680829b133c0c9bc654"}],"etc/keystone.conf.sample":[{"author":{"_account_id":11717,"name":"Ryan Oshima","email":"ryan.oshima@hp.com","username":"RyanOshima"},"change_message_id":"f83eb619266abaefdd48bcd72e8f8b241252d2da","unresolved":false,"context_lines":[{"line_number":59,"context_line":"# server. (string value)"},{"line_number":60,"context_line":"#admin_endpoint\u003d\u003cNone\u003e"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"# The hierarchy depth on keystone is restricted due to"},{"line_number":63,"context_line":"# performance issues. (integer value)"},{"line_number":64,"context_line":"#max_project_tree_depth\u003d5"},{"line_number":65,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":1,"id":"baada198_7e3c7b92","line":62,"updated":"2014-08-04 22:20:38.000000000","message":"\"keystone\"-\u003e\"Keystone\"","commit_id":"ee890ee1c48deec3818bb4144a130f41c8e53436"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"f73a4d4e7c124694f3a409965bb187f82a2745cf","unresolved":false,"context_lines":[{"line_number":59,"context_line":"# server. (string value)"},{"line_number":60,"context_line":"#admin_endpoint\u003d\u003cNone\u003e"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"# The hierarchy depth on keystone is restricted due to"},{"line_number":63,"context_line":"# performance issues. (integer value)"},{"line_number":64,"context_line":"#max_project_tree_depth\u003d5"},{"line_number":65,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":1,"id":"baada198_53278cc7","line":62,"in_reply_to":"baada198_7e3c7b92","updated":"2014-08-05 17:43:14.000000000","message":"Done","commit_id":"ee890ee1c48deec3818bb4144a130f41c8e53436"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"53dd4134088c2fd5fac935bfaca024f3b850e731","unresolved":false,"context_lines":[{"line_number":62,"context_line":"# The hierarchy depth on Keystone is restricted due to"},{"line_number":63,"context_line":"# performance issues. (integer value)"},{"line_number":64,"context_line":"#max_project_tree_depth\u003d5"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"# The number of worker processes to serve the public WSGI"},{"line_number":67,"context_line":"# application (integer value)"},{"line_number":68,"context_line":"#public_workers\u003d1"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"baada198_457ab076","line":65,"updated":"2014-08-11 14:09:33.000000000","message":"This setting is in the wrong sector.","commit_id":"5ecd595643d8a1f45e79d0ead47d0a9e80527419"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"79455dea5f25e75ccad6280bb8e769dd609bbf4e","unresolved":false,"context_lines":[{"line_number":62,"context_line":"# The hierarchy depth on Keystone is restricted due to"},{"line_number":63,"context_line":"# performance issues. (integer value)"},{"line_number":64,"context_line":"#max_project_tree_depth\u003d5"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"# The number of worker processes to serve the public WSGI"},{"line_number":67,"context_line":"# application (integer value)"},{"line_number":68,"context_line":"#public_workers\u003d1"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"baada198_0117a246","line":65,"in_reply_to":"baada198_457ab076","updated":"2014-08-19 14:11:37.000000000","message":"Done","commit_id":"5ecd595643d8a1f45e79d0ead47d0a9e80527419"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"53dd4134088c2fd5fac935bfaca024f3b850e731","unresolved":false,"context_lines":[{"line_number":1225,"context_line":"#"},{"line_number":1226,"context_line":""},{"line_number":1227,"context_line":"# role-assignment inheritance to projects from owning domain"},{"line_number":1228,"context_line":"# can be optionally enabled. (boolean value)"},{"line_number":1229,"context_line":"#enabled\u003dfalse"},{"line_number":1230,"context_line":""},{"line_number":1231,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":4,"id":"baada198_e59904d1","line":1228,"updated":"2014-08-11 14:09:33.000000000","message":"This is the correct place for this setting.","commit_id":"5ecd595643d8a1f45e79d0ead47d0a9e80527419"}],"keystone/assignment/controllers.py":[{"author":{"_account_id":10697,"name":"Thiago Paiva Brito","email":"thiagop@lsd.ufcg.edu.br","username":"thiagop","inactive":true},"change_message_id":"e9e057033086d4a5321f99be85cab75b930fbd50","unresolved":false,"context_lines":[{"line_number":419,"context_line":""},{"line_number":420,"context_line":"    @controller.protected()"},{"line_number":421,"context_line":"    def get_project(self, context, project_id):"},{"line_number":422,"context_line":"        show_hierarchy \u003d self._query_param_is_true(\u0027hierarchy\u0027, context)"},{"line_number":423,"context_line":"        show_parents \u003d self._query_param_is_true(\u0027parents\u0027, context)"},{"line_number":424,"context_line":"        show_subtree \u003d self._query_param_is_true(\u0027subtree\u0027, context)"},{"line_number":425,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1abeadc6_a4dc87e5","line":422,"updated":"2014-08-21 13:47:01.000000000","message":"Should change to \u0027hierarchy\u003dfull\u0027 or \u0027hierarchy\u003dsubtree\u0027 or \u0027hierarchy\u003dparents\u0027, as we talked.","commit_id":"515f41de3050685aa5ce19bd82154c5dc34fe5db"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"4b58c1ef9f6d81447f94d5a27df41966061798d5","unresolved":false,"context_lines":[{"line_number":419,"context_line":""},{"line_number":420,"context_line":"    @controller.protected()"},{"line_number":421,"context_line":"    def get_project(self, context, project_id):"},{"line_number":422,"context_line":"        show_hierarchy \u003d self._query_param_is_true(\u0027hierarchy\u0027, context)"},{"line_number":423,"context_line":"        show_parents \u003d self._query_param_is_true(\u0027parents\u0027, context)"},{"line_number":424,"context_line":"        show_subtree \u003d self._query_param_is_true(\u0027subtree\u0027, context)"},{"line_number":425,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1abeadc6_9acfe07e","line":422,"in_reply_to":"1abeadc6_a4dc87e5","updated":"2014-08-21 13:53:39.000000000","message":"++","commit_id":"515f41de3050685aa5ce19bd82154c5dc34fe5db"},{"author":{"_account_id":10697,"name":"Thiago Paiva Brito","email":"thiagop@lsd.ufcg.edu.br","username":"thiagop","inactive":true},"change_message_id":"e9e057033086d4a5321f99be85cab75b930fbd50","unresolved":false,"context_lines":[{"line_number":431,"context_line":""},{"line_number":432,"context_line":"        ref \u003d self.assignment_api.get_project(project_id)"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"        if show_hierarchy:"},{"line_number":435,"context_line":"            hierarchy \u003d self.assignment_api.list_project_parents(project_id)"},{"line_number":436,"context_line":"            hierarchy +\u003d self.assignment_api.get_project_subtree(project_id)"},{"line_number":437,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1abeadc6_1f282285","line":434,"updated":"2014-08-21 13:47:01.000000000","message":"I was wondering how confusing it can be if all projects on the hierarchy are on the same key (hierarchy). An alternative is, when the \u0027full\u0027 parameter is passed, we could add both keys (parents and subtree) to the project returned.","commit_id":"515f41de3050685aa5ce19bd82154c5dc34fe5db"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"4b58c1ef9f6d81447f94d5a27df41966061798d5","unresolved":false,"context_lines":[{"line_number":431,"context_line":""},{"line_number":432,"context_line":"        ref \u003d self.assignment_api.get_project(project_id)"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"        if show_hierarchy:"},{"line_number":435,"context_line":"            hierarchy \u003d self.assignment_api.list_project_parents(project_id)"},{"line_number":436,"context_line":"            hierarchy +\u003d self.assignment_api.get_project_subtree(project_id)"},{"line_number":437,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1abeadc6_7aae8499","line":434,"in_reply_to":"1abeadc6_1f282285","updated":"2014-08-21 13:53:39.000000000","message":"I agree, but I think that sending parents and subtree separately would be somehow confusing. One option could be to have only two parameters, in this way we could combine them, like:\n\nGET projects/\u003cproject_id\u003e?subtree\u0026parents","commit_id":"515f41de3050685aa5ce19bd82154c5dc34fe5db"}],"keystone/assignment/core.py":[{"author":{"_account_id":10697,"name":"Thiago Paiva Brito","email":"thiagop@lsd.ufcg.edu.br","username":"thiagop","inactive":true},"change_message_id":"e9e057033086d4a5321f99be85cab75b930fbd50","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        if (\u0027parent_project_id\u0027 in tenant and"},{"line_number":142,"context_line":"                tenant[\u0027parent_project_id\u0027] !\u003d parent_project_id):"},{"line_number":143,"context_line":"            raise exception.ForbiddenAction("},{"line_number":144,"context_line":"                action\u003d_(\u0027cannot update parent_project_id.\u0027))"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        if \u0027enabled\u0027 in tenant:"},{"line_number":147,"context_line":"            tenant[\u0027enabled\u0027] \u003d clean.project_enabled(tenant[\u0027enabled\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"1abeadc6_ff00c603","line":144,"updated":"2014-08-21 13:47:01.000000000","message":"Why? Message should specify the motive.\n\nSuggestion: \"Update of \u0027parent_project_id\u0027 is not allowed.\"","commit_id":"515f41de3050685aa5ce19bd82154c5dc34fe5db"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"4b58c1ef9f6d81447f94d5a27df41966061798d5","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        if (\u0027parent_project_id\u0027 in tenant and"},{"line_number":142,"context_line":"                tenant[\u0027parent_project_id\u0027] !\u003d parent_project_id):"},{"line_number":143,"context_line":"            raise exception.ForbiddenAction("},{"line_number":144,"context_line":"                action\u003d_(\u0027cannot update parent_project_id.\u0027))"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        if \u0027enabled\u0027 in tenant:"},{"line_number":147,"context_line":"            tenant[\u0027enabled\u0027] \u003d clean.project_enabled(tenant[\u0027enabled\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"1abeadc6_da9cf86c","line":144,"in_reply_to":"1abeadc6_ff00c603","updated":"2014-08-21 13:53:39.000000000","message":"++","commit_id":"515f41de3050685aa5ce19bd82154c5dc34fe5db"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"16ae8c07cca070ba38cc57dbfb987e1260e5c0af","unresolved":false,"context_lines":[{"line_number":438,"context_line":"                           \u0027continuing with cleanup.\u0027),"},{"line_number":439,"context_line":"                          {\u0027projectid\u0027: project[\u0027id\u0027],"},{"line_number":440,"context_line":"                           \u0027domainid\u0027: domain_id})"},{"line_number":441,"context_line":"            finally:"},{"line_number":442,"context_line":"                projects.remove(project)"},{"line_number":443,"context_line":""},{"line_number":444,"context_line":"        user_refs \u003d self.identity_api.list_users(domain_scope\u003ddomain_id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1abeadc6_9f646023","line":441,"updated":"2014-08-20 12:51:04.000000000","message":"this block is unnecessary","commit_id":"515f41de3050685aa5ce19bd82154c5dc34fe5db"}],"keystone/common/config.py":[{"author":{"_account_id":11717,"name":"Ryan Oshima","email":"ryan.oshima@hp.com","username":"RyanOshima"},"change_message_id":"f83eb619266abaefdd48bcd72e8f8b241252d2da","unresolved":false,"context_lines":[{"line_number":75,"context_line":"                        \u0027(e.g. /prefix/v2.0) or the endpoint should be found \u0027"},{"line_number":76,"context_line":"                        \u0027on a different server.\u0027),"},{"line_number":77,"context_line":"        cfg.IntOpt(\u0027max_project_tree_depth\u0027, default\u003d5,"},{"line_number":78,"context_line":"                   help\u003d\u0027The hierarchy depth on keystone is restricted due to \u0027"},{"line_number":79,"context_line":"                        \u0027performance issues.\u0027),"},{"line_number":80,"context_line":"        cfg.IntOpt(\u0027public_workers\u0027, default\u003d1,"},{"line_number":81,"context_line":"                   help\u003d\u0027The number of worker processes to serve the public \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_be70d373","line":78,"updated":"2014-08-04 22:20:38.000000000","message":"\"keystone\"-\u003e\"Keystone\"","commit_id":"ee890ee1c48deec3818bb4144a130f41c8e53436"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"f73a4d4e7c124694f3a409965bb187f82a2745cf","unresolved":false,"context_lines":[{"line_number":75,"context_line":"                        \u0027(e.g. /prefix/v2.0) or the endpoint should be found \u0027"},{"line_number":76,"context_line":"                        \u0027on a different server.\u0027),"},{"line_number":77,"context_line":"        cfg.IntOpt(\u0027max_project_tree_depth\u0027, default\u003d5,"},{"line_number":78,"context_line":"                   help\u003d\u0027The hierarchy depth on keystone is restricted due to \u0027"},{"line_number":79,"context_line":"                        \u0027performance issues.\u0027),"},{"line_number":80,"context_line":"        cfg.IntOpt(\u0027public_workers\u0027, default\u003d1,"},{"line_number":81,"context_line":"                   help\u003d\u0027The number of worker processes to serve the public \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_b30d4843","line":78,"in_reply_to":"baada198_be70d373","updated":"2014-08-05 17:43:14.000000000","message":"Done","commit_id":"ee890ee1c48deec3818bb4144a130f41c8e53436"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"53dd4134088c2fd5fac935bfaca024f3b850e731","unresolved":false,"context_lines":[{"line_number":76,"context_line":"                        \u0027on a different server.\u0027),"},{"line_number":77,"context_line":"        cfg.IntOpt(\u0027max_project_tree_depth\u0027, default\u003d5,"},{"line_number":78,"context_line":"                   help\u003d\u0027The hierarchy depth on Keystone is restricted due to \u0027"},{"line_number":79,"context_line":"                        \u0027performance issues.\u0027),"},{"line_number":80,"context_line":"        cfg.IntOpt(\u0027public_workers\u0027, default\u003d1,"},{"line_number":81,"context_line":"                   help\u003d\u0027The number of worker processes to serve the public \u0027"},{"line_number":82,"context_line":"                        \u0027WSGI application\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_052ef841","line":79,"updated":"2014-08-11 14:09:33.000000000","message":"This code is in the wrong sector.","commit_id":"5ecd595643d8a1f45e79d0ead47d0a9e80527419"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"79455dea5f25e75ccad6280bb8e769dd609bbf4e","unresolved":false,"context_lines":[{"line_number":76,"context_line":"                        \u0027on a different server.\u0027),"},{"line_number":77,"context_line":"        cfg.IntOpt(\u0027max_project_tree_depth\u0027, default\u003d5,"},{"line_number":78,"context_line":"                   help\u003d\u0027The hierarchy depth on Keystone is restricted due to \u0027"},{"line_number":79,"context_line":"                        \u0027performance issues.\u0027),"},{"line_number":80,"context_line":"        cfg.IntOpt(\u0027public_workers\u0027, default\u003d1,"},{"line_number":81,"context_line":"                   help\u003d\u0027The number of worker processes to serve the public \u0027"},{"line_number":82,"context_line":"                        \u0027WSGI application\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_e139cecf","line":79,"in_reply_to":"baada198_052ef841","updated":"2014-08-19 14:11:37.000000000","message":"Done","commit_id":"5ecd595643d8a1f45e79d0ead47d0a9e80527419"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"53dd4134088c2fd5fac935bfaca024f3b850e731","unresolved":false,"context_lines":[{"line_number":220,"context_line":"    \u0027os_inherit\u0027: ["},{"line_number":221,"context_line":"        cfg.BoolOpt(\u0027enabled\u0027, default\u003dFalse,"},{"line_number":222,"context_line":"                    help\u003d\u0027role-assignment inheritance to projects from \u0027"},{"line_number":223,"context_line":"                         \u0027owning domain can be optionally enabled.\u0027),"},{"line_number":224,"context_line":"    ],"},{"line_number":225,"context_line":"    \u0027token\u0027: ["},{"line_number":226,"context_line":"        cfg.ListOpt(\u0027bind\u0027, default\u003d[],"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_450d50e6","line":223,"updated":"2014-08-11 14:09:33.000000000","message":"This is the correct place for this code.","commit_id":"5ecd595643d8a1f45e79d0ead47d0a9e80527419"}],"keystone/exception.py":[{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"862b261bf49eeebf6aa68780b80723e312acdea8","unresolved":false,"context_lines":[{"line_number":301,"context_line":""},{"line_number":302,"context_line":"class InvalidRootParentProject(Error):"},{"line_number":303,"context_line":"    message_format \u003d _(\"%(parent_project_id)s is not the root project\")"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    code \u003d 400"},{"line_number":306,"context_line":"    title \u003d \u0027Bad Request\u0027"},{"line_number":307,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_f061bd11","line":304,"updated":"2014-08-11 15:47:58.000000000","message":"Remove the extra vertical space to keep the spacing consistent with the class above and below.","commit_id":"5ecd595643d8a1f45e79d0ead47d0a9e80527419"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"79455dea5f25e75ccad6280bb8e769dd609bbf4e","unresolved":false,"context_lines":[{"line_number":301,"context_line":""},{"line_number":302,"context_line":"class InvalidRootParentProject(Error):"},{"line_number":303,"context_line":"    message_format \u003d _(\"%(parent_project_id)s is not the root project\")"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    code \u003d 400"},{"line_number":306,"context_line":"    title \u003d \u0027Bad Request\u0027"},{"line_number":307,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_21dca670","line":304,"in_reply_to":"baada198_f061bd11","updated":"2014-08-19 14:11:37.000000000","message":"Done","commit_id":"5ecd595643d8a1f45e79d0ead47d0a9e80527419"}]}
