)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"c24f7d54969454005467c9725ae03b8c4e11e98e","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Projects with the is_domain flag set True must not be seen from Keystone"},{"line_number":10,"context_line":"v2. This patch makes those projects invisible in v2\u0027s"},{"line_number":11,"context_line":"get_project_by_name."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Co-Authored-By: Rodrigo Duarte \u003crodrigods@lsd.ufcg.edu.br\u003e"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ibaf81b5d3c9fcc3c4c3e9ebc77a02ef0cecf6dec"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9a1a9d01_e55d38ed","line":12,"updated":"2015-10-03 09:39:39.000000000","message":"maybe link to reseller bp ?","commit_id":"a330d9877f17a7df06937691b28eba1620f6667d"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"602705a3f881be7338edff5c69c6134bac853a77","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Projects with the is_domain flag set True must not be seen from Keystone"},{"line_number":10,"context_line":"v2. This patch makes those projects invisible in v2\u0027s"},{"line_number":11,"context_line":"get_project_by_name."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Co-Authored-By: Rodrigo Duarte \u003crodrigods@lsd.ufcg.edu.br\u003e"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ibaf81b5d3c9fcc3c4c3e9ebc77a02ef0cecf6dec"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9a1a9d01_85fd5c3d","line":12,"in_reply_to":"9a1a9d01_e55d38ed","updated":"2015-10-03 11:14:39.000000000","message":"++","commit_id":"a330d9877f17a7df06937691b28eba1620f6667d"}],"keystone/resource/controllers.py":[{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"8f6dfcb9ca32754f05a7fdb905444ec29a6960da","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        self.assert_admin(context)"},{"line_number":48,"context_line":"        tenant_refs \u003d self.resource_api.list_projects_in_domain("},{"line_number":49,"context_line":"            CONF.identity.default_domain_id)"},{"line_number":50,"context_line":"        # Remove projects acting as a domain in the return list"},{"line_number":51,"context_line":"        tenant_refs \u003d [self.v3_to_v2_project(tenant_ref)"},{"line_number":52,"context_line":"                       for tenant_ref in tenant_refs"},{"line_number":53,"context_line":"                       if not tenant_ref.get(\u0027is_domain\u0027)]"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba15a1d1_62d3e060","line":50,"updated":"2015-09-17 17:46:41.000000000","message":"is there a reason to be adding this?","commit_id":"f0da35dbd136e14deb3d06e807d6c3f91331fd0b"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"a894ae1fcacfdf9323ae88aca25e990310837888","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        self.assert_admin(context)"},{"line_number":48,"context_line":"        tenant_refs \u003d self.resource_api.list_projects_in_domain("},{"line_number":49,"context_line":"            CONF.identity.default_domain_id)"},{"line_number":50,"context_line":"        # Remove projects acting as a domain in the return list"},{"line_number":51,"context_line":"        tenant_refs \u003d [self.v3_to_v2_project(tenant_ref)"},{"line_number":52,"context_line":"                       for tenant_ref in tenant_refs"},{"line_number":53,"context_line":"                       if not tenant_ref.get(\u0027is_domain\u0027)]"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba15a1d1_e1b10ee1","line":50,"in_reply_to":"ba15a1d1_5518c2d2","updated":"2015-09-18 14:15:07.000000000","message":"I agree with Henry. This patch is entirely unclear, but seems to be fixing a high impact API bug.","commit_id":"f0da35dbd136e14deb3d06e807d6c3f91331fd0b"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"22833d6ee3e3ec12c19b614e949545ea359f94a1","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        self.assert_admin(context)"},{"line_number":48,"context_line":"        tenant_refs \u003d self.resource_api.list_projects_in_domain("},{"line_number":49,"context_line":"            CONF.identity.default_domain_id)"},{"line_number":50,"context_line":"        # Remove projects acting as a domain in the return list"},{"line_number":51,"context_line":"        tenant_refs \u003d [self.v3_to_v2_project(tenant_ref)"},{"line_number":52,"context_line":"                       for tenant_ref in tenant_refs"},{"line_number":53,"context_line":"                       if not tenant_ref.get(\u0027is_domain\u0027)]"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba15a1d1_6b509b0b","line":50,"in_reply_to":"ba15a1d1_62d3e060","updated":"2015-09-17 19:24:17.000000000","message":"this patch is just a split. I just added because it was part of the fixes here: https://review.openstack.org/#/c/215167/6/keystone/resource/controllers.py","commit_id":"f0da35dbd136e14deb3d06e807d6c3f91331fd0b"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"8ddafc95495c397cd7b37b97ca44a18eebe72ef5","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        self.assert_admin(context)"},{"line_number":48,"context_line":"        tenant_refs \u003d self.resource_api.list_projects_in_domain("},{"line_number":49,"context_line":"            CONF.identity.default_domain_id)"},{"line_number":50,"context_line":"        # Remove projects acting as a domain in the return list"},{"line_number":51,"context_line":"        tenant_refs \u003d [self.v3_to_v2_project(tenant_ref)"},{"line_number":52,"context_line":"                       for tenant_ref in tenant_refs"},{"line_number":53,"context_line":"                       if not tenant_ref.get(\u0027is_domain\u0027)]"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba15a1d1_5518c2d2","line":50,"in_reply_to":"ba15a1d1_6b509b0b","updated":"2015-09-18 07:31:03.000000000","message":"i didn\u0027t understand it then and I don\u0027t understand it now!  Where are we doing this removal?","commit_id":"f0da35dbd136e14deb3d06e807d6c3f91331fd0b"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"8bf0e16928d6e2015c774748585ba7d87aa3d1a7","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        self.assert_admin(context)"},{"line_number":48,"context_line":"        tenant_refs \u003d self.resource_api.list_projects_in_domain("},{"line_number":49,"context_line":"            CONF.identity.default_domain_id)"},{"line_number":50,"context_line":"        # Remove projects acting as a domain in the return list"},{"line_number":51,"context_line":"        tenant_refs \u003d [self.v3_to_v2_project(tenant_ref)"},{"line_number":52,"context_line":"                       for tenant_ref in tenant_refs"},{"line_number":53,"context_line":"                       if not tenant_ref.get(\u0027is_domain\u0027)]"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba15a1d1_68987a78","line":50,"in_reply_to":"ba15a1d1_e1b10ee1","updated":"2015-09-18 16:52:15.000000000","message":"I\u0027ve just added the comment. The removal is made at lines 51-53. I\u0027ll remove the comment. The proposal of the patch is the call of the method below","commit_id":"f0da35dbd136e14deb3d06e807d6c3f91331fd0b"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"a894ae1fcacfdf9323ae88aca25e990310837888","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        # Projects acting as a domain should not be visible via v2"},{"line_number":79,"context_line":"        ref \u003d self.resource_api.get_project_by_name("},{"line_number":80,"context_line":"            tenant_name, CONF.identity.default_domain_id)"},{"line_number":81,"context_line":"        self._assert_not_is_domain_project(ref[\u0027id\u0027], ref)"},{"line_number":82,"context_line":"        return {\u0027tenant\u0027: self.v3_to_v2_project(ref)}"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    # CRUD Extension"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba15a1d1_61a73ea7","line":81,"updated":"2015-09-18 14:15:07.000000000","message":"this is an absolutely terrible function name -- i have absolutely no clue what this function is expected to do without being well aware of the implementation details.","commit_id":"f0da35dbd136e14deb3d06e807d6c3f91331fd0b"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"8bf0e16928d6e2015c774748585ba7d87aa3d1a7","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        # Projects acting as a domain should not be visible via v2"},{"line_number":79,"context_line":"        ref \u003d self.resource_api.get_project_by_name("},{"line_number":80,"context_line":"            tenant_name, CONF.identity.default_domain_id)"},{"line_number":81,"context_line":"        self._assert_not_is_domain_project(ref[\u0027id\u0027], ref)"},{"line_number":82,"context_line":"        return {\u0027tenant\u0027: self.v3_to_v2_project(ref)}"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    # CRUD Extension"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba15a1d1_68239a56","line":81,"in_reply_to":"ba15a1d1_61a73ea7","updated":"2015-09-18 16:52:15.000000000","message":"agreed. I can refactor it in another patch, since it wasn\u0027t created at this patch. what about \"_assert_project_does_not_act_as_domain\" ?","commit_id":"f0da35dbd136e14deb3d06e807d6c3f91331fd0b"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"431310d766027213d87b1ed20c31f40161b4526d","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        return {\u0027tenant\u0027: self.v3_to_v2_project(ref)}"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    @controller.v2_deprecated"},{"line_number":75,"context_line":"    def get_project_by_name(self, context, tenant_name):"},{"line_number":76,"context_line":"        self.assert_admin(context)"},{"line_number":77,"context_line":"        # Projects acting as a domain should not be visible via v2"},{"line_number":78,"context_line":"        ref \u003d self.resource_api.get_project_by_name("}],"source_content_type":"text/x-python","patch_set":3,"id":"7a2fa921_4d17afa3","line":75,"updated":"2015-10-05 21:43:36.000000000","message":"why do we even have this function?","commit_id":"64c28885dd7fdaa47b5178071c591c72d34dcf8e"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"e95e5208289f15ac4ba59ef6577af945a7eb6d09","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        return {\u0027tenant\u0027: self.v3_to_v2_project(ref)}"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    @controller.v2_deprecated"},{"line_number":75,"context_line":"    def get_project_by_name(self, context, tenant_name):"},{"line_number":76,"context_line":"        self.assert_admin(context)"},{"line_number":77,"context_line":"        # Projects acting as a domain should not be visible via v2"},{"line_number":78,"context_line":"        ref \u003d self.resource_api.get_project_by_name("}],"source_content_type":"text/x-python","patch_set":3,"id":"7a2fa921_5d5d13e8","line":75,"in_reply_to":"7a2fa921_4d17afa3","updated":"2015-10-06 07:29:16.000000000","message":"well, the v2 API does support getting projects by name - but I agree, this should be an internal method since it is routed via the get_all_projects method. As an aside, it is also called a few other internal methods (e.g. auth \u0026 token).","commit_id":"64c28885dd7fdaa47b5178071c591c72d34dcf8e"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"a5260e362e993cc135aa093546c76a4021a41fbc","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        return {\u0027tenant\u0027: self.v3_to_v2_project(ref)}"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    @controller.v2_deprecated"},{"line_number":75,"context_line":"    def get_project_by_name(self, context, tenant_name):"},{"line_number":76,"context_line":"        self.assert_admin(context)"},{"line_number":77,"context_line":"        # Projects acting as a domain should not be visible via v2"},{"line_number":78,"context_line":"        ref \u003d self.resource_api.get_project_by_name("}],"source_content_type":"text/x-python","patch_set":3,"id":"7a2fa921_dde2839f","line":75,"in_reply_to":"7a2fa921_5d5d13e8","updated":"2015-10-06 07:47:58.000000000","message":"..actually, I take it back about auth/token - they are calling the manager versions...","commit_id":"64c28885dd7fdaa47b5178071c591c72d34dcf8e"}]}
