)]}'
{"keystone/catalog/backends/sql.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f3e1e12a7595c16652e407099f555da6a465a7d5","unresolved":false,"context_lines":[{"line_number":315,"context_line":""},{"line_number":316,"context_line":"            return catalog"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"    def get_v3_catalog(self, user_id, tenant_id):"},{"line_number":319,"context_line":"        \"\"\"Retrieve and format the current V3 service catalog."},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"        :param user_id: The id of the user who has been authenticated for"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a95cdbc_03db04ed","line":318,"range":{"start_line":318,"start_character":38,"end_line":318,"end_character":47},"updated":"2016-10-07 04:56:12.000000000","message":"we should create a follow-up patch to rename this project_id, it\u0027ll need to be updated in the base class and a release note -- if you\u0027re interested in extra work ;)","commit_id":"a37a8473ca8aa9595157a3992a6389fe0d0943ea"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"281baecc6d39712ace7f515d0592ae8c5ccb5758","unresolved":false,"context_lines":[{"line_number":315,"context_line":""},{"line_number":316,"context_line":"            return catalog"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"    def get_v3_catalog(self, user_id, tenant_id):"},{"line_number":319,"context_line":"        \"\"\"Retrieve and format the current V3 service catalog."},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"        :param user_id: The id of the user who has been authenticated for"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a95cdbc_83560604","line":318,"range":{"start_line":318,"start_character":38,"end_line":318,"end_character":47},"in_reply_to":"1a95cdbc_03db04ed","updated":"2016-10-08 06:56:23.000000000","message":"will follow up!","commit_id":"a37a8473ca8aa9595157a3992a6389fe0d0943ea"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f3e1e12a7595c16652e407099f555da6a465a7d5","unresolved":false,"context_lines":[{"line_number":375,"context_line":"                service[\u0027name\u0027] \u003d svc.extra.get(\u0027name\u0027, \u0027\u0027)"},{"line_number":376,"context_line":"                return service"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"            catalog_ref \u003d [make_v3_service(svc) for svc in services]"},{"line_number":379,"context_line":"            endpoint_ref \u003d {}"},{"line_number":380,"context_line":"            if tenant_id:"},{"line_number":381,"context_line":"                endpoint_ref \u003d self.catalog_api.list_endpoints_for_project("}],"source_content_type":"text/x-python","patch_set":6,"id":"1a95cdbc_839c7410","line":378,"range":{"start_line":378,"start_character":12,"end_line":378,"end_character":68},"updated":"2016-10-07 04:56:12.000000000","message":"add a comment above here saying that this is the catalog returned if no endpoint filtering is performed","commit_id":"a37a8473ca8aa9595157a3992a6389fe0d0943ea"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"281baecc6d39712ace7f515d0592ae8c5ccb5758","unresolved":false,"context_lines":[{"line_number":375,"context_line":"                service[\u0027name\u0027] \u003d svc.extra.get(\u0027name\u0027, \u0027\u0027)"},{"line_number":376,"context_line":"                return service"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"            catalog_ref \u003d [make_v3_service(svc) for svc in services]"},{"line_number":379,"context_line":"            endpoint_ref \u003d {}"},{"line_number":380,"context_line":"            if tenant_id:"},{"line_number":381,"context_line":"                endpoint_ref \u003d self.catalog_api.list_endpoints_for_project("}],"source_content_type":"text/x-python","patch_set":6,"id":"1a95cdbc_99a83822","line":378,"range":{"start_line":378,"start_character":12,"end_line":378,"end_character":68},"in_reply_to":"1a95cdbc_839c7410","updated":"2016-10-08 06:56:23.000000000","message":"Done","commit_id":"a37a8473ca8aa9595157a3992a6389fe0d0943ea"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f3e1e12a7595c16652e407099f555da6a465a7d5","unresolved":false,"context_lines":[{"line_number":376,"context_line":"                return service"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"            catalog_ref \u003d [make_v3_service(svc) for svc in services]"},{"line_number":379,"context_line":"            endpoint_ref \u003d {}"},{"line_number":380,"context_line":"            if tenant_id:"},{"line_number":381,"context_line":"                endpoint_ref \u003d self.catalog_api.list_endpoints_for_project("},{"line_number":382,"context_line":"                    tenant_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a95cdbc_a39df00b","line":379,"updated":"2016-10-07 04:56:12.000000000","message":"add a new line before this and a comment indicating we will now begin the logic of checking for endpoint filtering, and write out the logic on what happens if endpoint_ref is empty or not","commit_id":"a37a8473ca8aa9595157a3992a6389fe0d0943ea"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"281baecc6d39712ace7f515d0592ae8c5ccb5758","unresolved":false,"context_lines":[{"line_number":376,"context_line":"                return service"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"            catalog_ref \u003d [make_v3_service(svc) for svc in services]"},{"line_number":379,"context_line":"            endpoint_ref \u003d {}"},{"line_number":380,"context_line":"            if tenant_id:"},{"line_number":381,"context_line":"                endpoint_ref \u003d self.catalog_api.list_endpoints_for_project("},{"line_number":382,"context_line":"                    tenant_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a95cdbc_340c8b3a","line":379,"in_reply_to":"1a95cdbc_a39df00b","updated":"2016-10-08 06:56:23.000000000","message":"Done","commit_id":"a37a8473ca8aa9595157a3992a6389fe0d0943ea"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f3e1e12a7595c16652e407099f555da6a465a7d5","unresolved":false,"context_lines":[{"line_number":377,"context_line":""},{"line_number":378,"context_line":"            catalog_ref \u003d [make_v3_service(svc) for svc in services]"},{"line_number":379,"context_line":"            endpoint_ref \u003d {}"},{"line_number":380,"context_line":"            if tenant_id:"},{"line_number":381,"context_line":"                endpoint_ref \u003d self.catalog_api.list_endpoints_for_project("},{"line_number":382,"context_line":"                    tenant_id)"},{"line_number":383,"context_line":"            # endpoint filter is enabled, only return the filtered endpoints."}],"source_content_type":"text/x-python","patch_set":6,"id":"1a95cdbc_c3475c75","line":380,"range":{"start_line":380,"start_character":12,"end_line":380,"end_character":25},"updated":"2016-10-07 04:56:12.000000000","message":"why not do a quick:\n\n  if not tenant_id:\n    return catalog_ref\n\nit\u0027ll shortcut the usual case and you can remove the empty endpoint_ref variable","commit_id":"a37a8473ca8aa9595157a3992a6389fe0d0943ea"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"281baecc6d39712ace7f515d0592ae8c5ccb5758","unresolved":false,"context_lines":[{"line_number":377,"context_line":""},{"line_number":378,"context_line":"            catalog_ref \u003d [make_v3_service(svc) for svc in services]"},{"line_number":379,"context_line":"            endpoint_ref \u003d {}"},{"line_number":380,"context_line":"            if tenant_id:"},{"line_number":381,"context_line":"                endpoint_ref \u003d self.catalog_api.list_endpoints_for_project("},{"line_number":382,"context_line":"                    tenant_id)"},{"line_number":383,"context_line":"            # endpoint filter is enabled, only return the filtered endpoints."}],"source_content_type":"text/x-python","patch_set":6,"id":"1a95cdbc_9432bff0","line":380,"range":{"start_line":380,"start_character":12,"end_line":380,"end_character":25},"in_reply_to":"1a95cdbc_c3475c75","updated":"2016-10-08 06:56:23.000000000","message":"if not tenant_id, this should be a domain scoped token, we cannot return the full unfiltered catalog since  CONF.endpoint_filter.return_all_endpoints_if_no_filter maybe set to false.\n\n\nI think the logic here is, tenant id is None so that endpoint filter is not enabled, then let\u0027s see what option of return_all_endpoints_if_no_filter tell us to do.","commit_id":"a37a8473ca8aa9595157a3992a6389fe0d0943ea"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f3e1e12a7595c16652e407099f555da6a465a7d5","unresolved":false,"context_lines":[{"line_number":380,"context_line":"            if tenant_id:"},{"line_number":381,"context_line":"                endpoint_ref \u003d self.catalog_api.list_endpoints_for_project("},{"line_number":382,"context_line":"                    tenant_id)"},{"line_number":383,"context_line":"            # endpoint filter is enabled, only return the filtered endpoints."},{"line_number":384,"context_line":"            if endpoint_ref:"},{"line_number":385,"context_line":"                endpoint_ids \u003d list(endpoint_ref.keys())"},{"line_number":386,"context_line":"                for service in catalog_ref[:]:"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a95cdbc_23a9e024","line":383,"range":{"start_line":383,"start_character":14,"end_line":383,"end_character":76},"updated":"2016-10-07 04:56:12.000000000","message":"# if endpoint_ref is empty then we we return the full service catalog, this is the usual case\n# if endpoint_ref is not empty, then endpoint filtering is being performed, we must now filter out certain endpoints\n# if CONF.endpoint_filter.return_all_endpoints_if_no_filter is set to true then we return [] because ... (i\u0027m not sure why)","commit_id":"a37a8473ca8aa9595157a3992a6389fe0d0943ea"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f3e1e12a7595c16652e407099f555da6a465a7d5","unresolved":false,"context_lines":[{"line_number":382,"context_line":"                    tenant_id)"},{"line_number":383,"context_line":"            # endpoint filter is enabled, only return the filtered endpoints."},{"line_number":384,"context_line":"            if endpoint_ref:"},{"line_number":385,"context_line":"                endpoint_ids \u003d list(endpoint_ref.keys())"},{"line_number":386,"context_line":"                for service in catalog_ref[:]:"},{"line_number":387,"context_line":"                    endpoints \u003d service[\u0027endpoints\u0027]"},{"line_number":388,"context_line":"                    for endpoint in endpoints[:]:"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a95cdbc_4630bae8","line":385,"range":{"start_line":385,"start_character":16,"end_line":385,"end_character":28},"updated":"2016-10-07 04:56:12.000000000","message":"call this filtered_endpoints? filtered_eids? there\u0027s too many \"endpoints\" here to keep track of :)","commit_id":"a37a8473ca8aa9595157a3992a6389fe0d0943ea"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"281baecc6d39712ace7f515d0592ae8c5ccb5758","unresolved":false,"context_lines":[{"line_number":382,"context_line":"                    tenant_id)"},{"line_number":383,"context_line":"            # endpoint filter is enabled, only return the filtered endpoints."},{"line_number":384,"context_line":"            if endpoint_ref:"},{"line_number":385,"context_line":"                endpoint_ids \u003d list(endpoint_ref.keys())"},{"line_number":386,"context_line":"                for service in catalog_ref[:]:"},{"line_number":387,"context_line":"                    endpoints \u003d service[\u0027endpoints\u0027]"},{"line_number":388,"context_line":"                    for endpoint in endpoints[:]:"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a95cdbc_b415fbe5","line":385,"range":{"start_line":385,"start_character":16,"end_line":385,"end_character":28},"in_reply_to":"1a95cdbc_4630bae8","updated":"2016-10-08 06:56:23.000000000","message":"Done","commit_id":"a37a8473ca8aa9595157a3992a6389fe0d0943ea"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f3e1e12a7595c16652e407099f555da6a465a7d5","unresolved":false,"context_lines":[{"line_number":383,"context_line":"            # endpoint filter is enabled, only return the filtered endpoints."},{"line_number":384,"context_line":"            if endpoint_ref:"},{"line_number":385,"context_line":"                endpoint_ids \u003d list(endpoint_ref.keys())"},{"line_number":386,"context_line":"                for service in catalog_ref[:]:"},{"line_number":387,"context_line":"                    endpoints \u003d service[\u0027endpoints\u0027]"},{"line_number":388,"context_line":"                    for endpoint in endpoints[:]:"},{"line_number":389,"context_line":"                        endpoint_id \u003d endpoint[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a95cdbc_865482ff","line":386,"range":{"start_line":386,"start_character":42,"end_line":386,"end_character":45},"updated":"2016-10-07 04:56:12.000000000","message":"same comment as below","commit_id":"a37a8473ca8aa9595157a3992a6389fe0d0943ea"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"281baecc6d39712ace7f515d0592ae8c5ccb5758","unresolved":false,"context_lines":[{"line_number":383,"context_line":"            # endpoint filter is enabled, only return the filtered endpoints."},{"line_number":384,"context_line":"            if endpoint_ref:"},{"line_number":385,"context_line":"                endpoint_ids \u003d list(endpoint_ref.keys())"},{"line_number":386,"context_line":"                for service in catalog_ref[:]:"},{"line_number":387,"context_line":"                    endpoints \u003d service[\u0027endpoints\u0027]"},{"line_number":388,"context_line":"                    for endpoint in endpoints[:]:"},{"line_number":389,"context_line":"                        endpoint_id \u003d endpoint[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a95cdbc_d4d44721","line":386,"range":{"start_line":386,"start_character":42,"end_line":386,"end_character":45},"in_reply_to":"1a95cdbc_865482ff","updated":"2016-10-08 06:56:23.000000000","message":"will add a comment to explain why do it like this.","commit_id":"a37a8473ca8aa9595157a3992a6389fe0d0943ea"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f3e1e12a7595c16652e407099f555da6a465a7d5","unresolved":false,"context_lines":[{"line_number":385,"context_line":"                endpoint_ids \u003d list(endpoint_ref.keys())"},{"line_number":386,"context_line":"                for service in catalog_ref[:]:"},{"line_number":387,"context_line":"                    endpoints \u003d service[\u0027endpoints\u0027]"},{"line_number":388,"context_line":"                    for endpoint in endpoints[:]:"},{"line_number":389,"context_line":"                        endpoint_id \u003d endpoint[\u0027id\u0027]"},{"line_number":390,"context_line":"                        # remove the endpoint that is not associated with"},{"line_number":391,"context_line":"                        # the project."}],"source_content_type":"text/x-python","patch_set":6,"id":"1a95cdbc_c623eaa5","line":388,"range":{"start_line":388,"start_character":45,"end_line":388,"end_character":48},"updated":"2016-10-07 04:56:12.000000000","message":"? can we use a more common convention","commit_id":"a37a8473ca8aa9595157a3992a6389fe0d0943ea"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"281baecc6d39712ace7f515d0592ae8c5ccb5758","unresolved":false,"context_lines":[{"line_number":385,"context_line":"                endpoint_ids \u003d list(endpoint_ref.keys())"},{"line_number":386,"context_line":"                for service in catalog_ref[:]:"},{"line_number":387,"context_line":"                    endpoints \u003d service[\u0027endpoints\u0027]"},{"line_number":388,"context_line":"                    for endpoint in endpoints[:]:"},{"line_number":389,"context_line":"                        endpoint_id \u003d endpoint[\u0027id\u0027]"},{"line_number":390,"context_line":"                        # remove the endpoint that is not associated with"},{"line_number":391,"context_line":"                        # the project."}],"source_content_type":"text/x-python","patch_set":6,"id":"1a95cdbc_54e917e5","line":388,"range":{"start_line":388,"start_character":45,"end_line":388,"end_character":48},"in_reply_to":"1a95cdbc_c623eaa5","updated":"2016-10-08 06:56:23.000000000","message":"ditto.","commit_id":"a37a8473ca8aa9595157a3992a6389fe0d0943ea"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f3e1e12a7595c16652e407099f555da6a465a7d5","unresolved":false,"context_lines":[{"line_number":403,"context_line":"                    if not service.get(\u0027endpoints\u0027):"},{"line_number":404,"context_line":"                        catalog_ref.remove(service)"},{"line_number":405,"context_line":"            elif not CONF.endpoint_filter.return_all_endpoints_if_no_filter:"},{"line_number":406,"context_line":"                return []"},{"line_number":407,"context_line":"            return catalog_ref"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"    @sql.handle_conflicts(conflict_type\u003d\u0027project_endpoint\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a95cdbc_43a6ec53","line":406,"range":{"start_line":406,"start_character":16,"end_line":406,"end_character":25},"updated":"2016-10-07 04:56:12.000000000","message":"we return [] here? add a comment","commit_id":"a37a8473ca8aa9595157a3992a6389fe0d0943ea"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"281baecc6d39712ace7f515d0592ae8c5ccb5758","unresolved":false,"context_lines":[{"line_number":403,"context_line":"                    if not service.get(\u0027endpoints\u0027):"},{"line_number":404,"context_line":"                        catalog_ref.remove(service)"},{"line_number":405,"context_line":"            elif not CONF.endpoint_filter.return_all_endpoints_if_no_filter:"},{"line_number":406,"context_line":"                return []"},{"line_number":407,"context_line":"            return catalog_ref"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"    @sql.handle_conflicts(conflict_type\u003d\u0027project_endpoint\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a95cdbc_a30b0223","line":406,"range":{"start_line":406,"start_character":16,"end_line":406,"end_character":25},"in_reply_to":"1a95cdbc_43a6ec53","updated":"2016-10-08 06:56:23.000000000","message":"so, this is what will be return if the endpoint filter is not enabled (tenant id is not set or endpoint-project association is defined). Return an empty list just because the original logic from endpoint filter backend return empty list in this case. I\u0027d like not to change the existing behavior. \n\n\nBut this impacts the behavior of SQL backend somehow,\nw/o the change, for example, it won\u0027t return empty list if it\u0027s a domain scoped token regardless what\u0027s `return_all_endpoints_if_no_filter` hold but now it\u0027s the option for SQL backend as well.\n\n\nWhat do you think?","commit_id":"a37a8473ca8aa9595157a3992a6389fe0d0943ea"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"3a77800cca55cd5f0d5f24cc29a7a104f3b63b62","unresolved":false,"context_lines":[{"line_number":405,"context_line":"                        if not filtered_endpoints[endpoint_id][\u0027enabled\u0027]:"},{"line_number":406,"context_line":"                            service[\u0027endpoints\u0027].remove(endpoint)"},{"line_number":407,"context_line":"                    # NOTE(davechen): The service will not be included in the"},{"line_number":408,"context_line":"                    # catalog if the service doesn\u0027t has any endpoint when"},{"line_number":409,"context_line":"                    # endpoint filter is enabled, this is inconsistent with"},{"line_number":410,"context_line":"                    # full catalog that is returned when endpoint filter is"},{"line_number":411,"context_line":"                    # disabled."}],"source_content_type":"text/x-python","patch_set":7,"id":"1a95cdbc_5d3a139a","line":408,"range":{"start_line":408,"start_character":53,"end_line":408,"end_character":56},"updated":"2016-10-08 16:08:02.000000000","message":"have*","commit_id":"15d5ee3e78aebfae51096aa5dc3c3c5dda4ea1b6"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"84aea40f5cd24aacaed90ca3a9bc0efecd03d196","unresolved":false,"context_lines":[{"line_number":405,"context_line":"                        if not filtered_endpoints[endpoint_id][\u0027enabled\u0027]:"},{"line_number":406,"context_line":"                            service[\u0027endpoints\u0027].remove(endpoint)"},{"line_number":407,"context_line":"                    # NOTE(davechen): The service will not be included in the"},{"line_number":408,"context_line":"                    # catalog if the service doesn\u0027t has any endpoint when"},{"line_number":409,"context_line":"                    # endpoint filter is enabled, this is inconsistent with"},{"line_number":410,"context_line":"                    # full catalog that is returned when endpoint filter is"},{"line_number":411,"context_line":"                    # disabled."}],"source_content_type":"text/x-python","patch_set":7,"id":"1a95cdbc_8f3d4091","line":408,"range":{"start_line":408,"start_character":53,"end_line":408,"end_character":56},"in_reply_to":"1a95cdbc_5d3a139a","updated":"2016-10-09 01:43:42.000000000","message":"Done","commit_id":"15d5ee3e78aebfae51096aa5dc3c3c5dda4ea1b6"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"4ab70751364ed7fd2540e82e05c9f72df0f9d554","unresolved":false,"context_lines":[{"line_number":375,"context_line":"                service[\u0027name\u0027] \u003d svc.extra.get(\u0027name\u0027, \u0027\u0027)"},{"line_number":376,"context_line":"                return service"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"            # Build the unfiltered catalog, this is the catalog that is"},{"line_number":379,"context_line":"            # returned if endpoint filtering is not performed and the"},{"line_number":380,"context_line":"            # option of `return_all_endpoints_if_no_filter` is set to true."},{"line_number":381,"context_line":"            catalog_ref \u003d [make_v3_service(svc) for svc in services]"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a629dbe_a47fa2a9","line":378,"updated":"2016-11-10 14:55:00.000000000","message":"I have a question. Why does deprecation of a backend changes the existing backend? Does it mean that without this patch i am going to get one catalog, and with this patch another?","commit_id":"fd3e6276a3fb90506ef7e3cb08efe7cb3f94c1ca"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"174566f11c7383935070d2c5bd8b4bed7676ab3e","unresolved":false,"context_lines":[{"line_number":375,"context_line":"                service[\u0027name\u0027] \u003d svc.extra.get(\u0027name\u0027, \u0027\u0027)"},{"line_number":376,"context_line":"                return service"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"            # Build the unfiltered catalog, this is the catalog that is"},{"line_number":379,"context_line":"            # returned if endpoint filtering is not performed and the"},{"line_number":380,"context_line":"            # option of `return_all_endpoints_if_no_filter` is set to true."},{"line_number":381,"context_line":"            catalog_ref \u003d [make_v3_service(svc) for svc in services]"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a629dbe_47fcf13d","line":378,"in_reply_to":"9a629dbe_a47fa2a9","updated":"2016-11-11 03:07:18.000000000","message":"@Boris, \u0027endpoint_filter.sql\u0027 backend is the only piece that still exist in legacy extension directory, and we don\u0027t need a separate backend other that \"SQL\" which just patched some new features. This is motivation of deprecating \u0027endpoint_filter.sql\u0027 backend and combining it with \u0027SQL\u0027.\n\nOkay, back to your another question, you won\u0027t get a another catalog with this patch, all of the change here is logic combination, it\u0027s controlled by whether endpoint filter is enabled (project-endpoint association) and how CONF.endpoint_filter.return_all_endpoints_if_no_filter is defined, all the logic is the same as before.","commit_id":"fd3e6276a3fb90506ef7e3cb08efe7cb3f94c1ca"}],"keystone/contrib/endpoint_filter/backends/catalog_sql.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f3e1e12a7595c16652e407099f555da6a465a7d5","unresolved":false,"context_lines":[{"line_number":38,"context_line":"                                 list_endpoints_for_project(project_id))"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        if (not dict_of_endpoint_refs and"},{"line_number":41,"context_line":"                CONF.endpoint_filter.return_all_endpoints_if_no_filter):"},{"line_number":42,"context_line":"            return super(EndpointFilterCatalog, self).get_v3_catalog("},{"line_number":43,"context_line":"                user_id, project_id)"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1a95cdbc_0326a414","side":"PARENT","line":41,"range":{"start_line":41,"start_character":16,"end_line":41,"end_character":70},"updated":"2016-10-07 04:56:12.000000000","message":"does it make sense to move this option to [catalog] and deprecate it in [endpoint_filter]? in terms of the code, i think oslo.config is smart enough for you to just reference the new one.\n\nalso, we should probably deprecate the `enabled` option in [endpoint_filter] for sure, it\u0027s not longer needed, right?","commit_id":"be78383b807da1705fb9966abb8d6d34f32317a8"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"d228bba8f4326bf8a4f704b993fa0b025a028989","unresolved":false,"context_lines":[{"line_number":21,"context_line":"CONF \u003d keystone.conf.CONF"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"@versionutils.deprecated("},{"line_number":25,"context_line":"    what\u003d(\u0027keystone.contrib.endpoint_filter.\u0027"},{"line_number":26,"context_line":"          \u0027backends.catalog_sql.EndPointFilterCatalog\u0027),"},{"line_number":27,"context_line":"    as_of\u003dversionutils.deprecated.OCATA,"},{"line_number":28,"context_line":"    in_favor_of\u003d\u0027keystone.catalog.backends.sql.Catalog\u0027)"},{"line_number":29,"context_line":"class EndpointFilterCatalog(sql.Catalog):"},{"line_number":30,"context_line":"    def get_v3_catalog(self, user_id, project_id):"},{"line_number":31,"context_line":"        return super(EndpointFilterCatalog, self).get_v3_catalog("}],"source_content_type":"text/x-python","patch_set":6,"id":"1a95cdbc_5ba86ddb","line":28,"range":{"start_line":24,"start_character":0,"end_line":28,"end_character":56},"updated":"2016-10-07 19:58:30.000000000","message":"also, i\u0027m OK with a 1 cycle deprecation for this, since contrib it basically removed","commit_id":"a37a8473ca8aa9595157a3992a6389fe0d0943ea"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"281baecc6d39712ace7f515d0592ae8c5ccb5758","unresolved":false,"context_lines":[{"line_number":21,"context_line":"CONF \u003d keystone.conf.CONF"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"@versionutils.deprecated("},{"line_number":25,"context_line":"    what\u003d(\u0027keystone.contrib.endpoint_filter.\u0027"},{"line_number":26,"context_line":"          \u0027backends.catalog_sql.EndPointFilterCatalog\u0027),"},{"line_number":27,"context_line":"    as_of\u003dversionutils.deprecated.OCATA,"},{"line_number":28,"context_line":"    in_favor_of\u003d\u0027keystone.catalog.backends.sql.Catalog\u0027)"},{"line_number":29,"context_line":"class EndpointFilterCatalog(sql.Catalog):"},{"line_number":30,"context_line":"    def get_v3_catalog(self, user_id, project_id):"},{"line_number":31,"context_line":"        return super(EndpointFilterCatalog, self).get_v3_catalog("}],"source_content_type":"text/x-python","patch_set":6,"id":"1a95cdbc_b48edbcd","line":28,"range":{"start_line":24,"start_character":0,"end_line":28,"end_character":56},"in_reply_to":"1a95cdbc_5ba86ddb","updated":"2016-10-08 06:56:23.000000000","message":"Done","commit_id":"a37a8473ca8aa9595157a3992a6389fe0d0943ea"}],"keystone/tests/unit/catalog/test_backends.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f3e1e12a7595c16652e407099f555da6a465a7d5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"1a95cdbc_06415238","updated":"2016-10-07 04:56:12.000000000","message":"why the change?","commit_id":"a37a8473ca8aa9595157a3992a6389fe0d0943ea"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"281baecc6d39712ace7f515d0592ae8c5ccb5758","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"1a95cdbc_745d3346","in_reply_to":"1a95cdbc_06415238","updated":"2016-10-08 06:56:23.000000000","message":"Because regardless of the substitution of the endpoint template with project id or the filtering by the project id requires the project exists.","commit_id":"a37a8473ca8aa9595157a3992a6389fe0d0943ea"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"c22f265cd67c8272de5303d09b6cf5edbbdaed2b","unresolved":false,"context_lines":[{"line_number":560,"context_line":"        enabled_endpoint_ref \u003d self._create_endpoints()[1]"},{"line_number":561,"context_line":""},{"line_number":562,"context_line":"        user_id \u003d uuid.uuid4().hex"},{"line_number":563,"context_line":"        # Use the project created by the default fixture, the project should"},{"line_number":564,"context_line":"        # exist since the project should exist if we want to filter the"},{"line_number":565,"context_line":"        # catalog by the project or replace the url with a valid project id."},{"line_number":566,"context_line":"        catalog \u003d self.catalog_api.get_v3_catalog(user_id,"},{"line_number":567,"context_line":"                                                  self.tenant_bar[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a95cdbc_03f2f699","line":564,"range":{"start_line":563,"start_character":58,"end_line":564,"end_character":16},"updated":"2016-10-08 07:02:24.000000000","message":"should reword this, will update this in the next push.","commit_id":"15d5ee3e78aebfae51096aa5dc3c3c5dda4ea1b6"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"84aea40f5cd24aacaed90ca3a9bc0efecd03d196","unresolved":false,"context_lines":[{"line_number":560,"context_line":"        enabled_endpoint_ref \u003d self._create_endpoints()[1]"},{"line_number":561,"context_line":""},{"line_number":562,"context_line":"        user_id \u003d uuid.uuid4().hex"},{"line_number":563,"context_line":"        # Use the project created by the default fixture, the project should"},{"line_number":564,"context_line":"        # exist since the project should exist if we want to filter the"},{"line_number":565,"context_line":"        # catalog by the project or replace the url with a valid project id."},{"line_number":566,"context_line":"        catalog \u003d self.catalog_api.get_v3_catalog(user_id,"},{"line_number":567,"context_line":"                                                  self.tenant_bar[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a95cdbc_af403c08","line":564,"range":{"start_line":563,"start_character":58,"end_line":564,"end_character":16},"in_reply_to":"1a95cdbc_03f2f699","updated":"2016-10-09 01:43:42.000000000","message":"Done","commit_id":"15d5ee3e78aebfae51096aa5dc3c3c5dda4ea1b6"}],"releasenotes/notes/deprecated-as-of-ocata-a5b2f1e3e39f818e.yaml":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f3e1e12a7595c16652e407099f555da6a465a7d5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"1a95cdbc_669db6bb","updated":"2016-10-07 04:56:12.000000000","message":"wrap the lines where possible to 80 characters","commit_id":"a37a8473ca8aa9595157a3992a6389fe0d0943ea"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"281baecc6d39712ace7f515d0592ae8c5ccb5758","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"1a95cdbc_43507e0b","in_reply_to":"1a95cdbc_669db6bb","updated":"2016-10-08 06:56:23.000000000","message":"Done","commit_id":"a37a8473ca8aa9595157a3992a6389fe0d0943ea"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"3a77800cca55cd5f0d5f24cc29a7a104f3b63b62","unresolved":false,"context_lines":[{"line_number":2,"context_line":"deprecations:"},{"line_number":3,"context_line":"  - \u003e"},{"line_number":4,"context_line":"    [`blueprint deprecated-as-of-ocata \u003chttps://blueprints.launchpad.net/keystone/+spec/deprecated-as-of-ocata\u003e`_]"},{"line_number":5,"context_line":"    The backend of catalog ``endpoint_filter.sql`` has been deprecated"},{"line_number":6,"context_line":"    since Ocata release, the backend has been consolidated with sql backend."},{"line_number":7,"context_line":"    It\u0027s recommended to remove the backend in the \u0027Pike\u0027 release and use sql"},{"line_number":8,"context_line":"    backend instead."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"1a95cdbc_ddfc63ba","line":8,"range":{"start_line":5,"start_character":4,"end_line":8,"end_character":20},"updated":"2016-10-08 16:08:02.000000000","message":"a slight change in wording:\n\nThe catalog backend ``endpoint_filter.sql``has been deprecated in the `Ocata` release; it has been consolidated with the ``sql`` backend. It\u0027s recommended to replace the ``endpoint_filter.sql`` catalog backend with the ``sql`` backend. The ``endpoint_filter.sql`` backend will be removed in the `Pike` release.","commit_id":"15d5ee3e78aebfae51096aa5dc3c3c5dda4ea1b6"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"84aea40f5cd24aacaed90ca3a9bc0efecd03d196","unresolved":false,"context_lines":[{"line_number":2,"context_line":"deprecations:"},{"line_number":3,"context_line":"  - \u003e"},{"line_number":4,"context_line":"    [`blueprint deprecated-as-of-ocata \u003chttps://blueprints.launchpad.net/keystone/+spec/deprecated-as-of-ocata\u003e`_]"},{"line_number":5,"context_line":"    The backend of catalog ``endpoint_filter.sql`` has been deprecated"},{"line_number":6,"context_line":"    since Ocata release, the backend has been consolidated with sql backend."},{"line_number":7,"context_line":"    It\u0027s recommended to remove the backend in the \u0027Pike\u0027 release and use sql"},{"line_number":8,"context_line":"    backend instead."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"1a95cdbc_0f4a1026","line":8,"range":{"start_line":5,"start_character":4,"end_line":8,"end_character":20},"in_reply_to":"1a95cdbc_ddfc63ba","updated":"2016-10-09 01:43:42.000000000","message":"nicely reword! thanks sir!","commit_id":"15d5ee3e78aebfae51096aa5dc3c3c5dda4ea1b6"}]}
