)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d7901a191279319fab41343199df425cd1bce2a1","unresolved":true,"context_lines":[{"line_number":10,"context_line":"project_id in the URLs since the very beginning."},{"line_number":11,"context_line":"This comes from an old assumption that our APIs"},{"line_number":12,"context_line":"would be differentiated per-tenant on the cloud,"},{"line_number":13,"context_line":"and we would allow different kinds of API endpoints"},{"line_number":14,"context_line":"(public, admin, internal, etc). We don\u0027t _need_"},{"line_number":15,"context_line":"the project_id information that we receive in"},{"line_number":16,"context_line":"the URL for any of our APIs to function. We rather"},{"line_number":17,"context_line":"authorize tenants by gathering information from"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"bbac09fb_73ba5eb3","line":14,"range":{"start_line":13,"start_character":4,"end_line":14,"end_character":30},"updated":"2021-02-03 19:31:50.000000000","message":"I feel like I make it sound like this is no longer desirable/allowed/supported. That\u0027s not the case.\nHaving different kinds of API endpoint interfaces is transparent to manila. Just that, we initially thought we could have our API differ with the endpoints - that\u0027s no longer the design.\n\nIn deployments, it\u0027s possible that there are different networks that the API is available on, and these \"admin\", \"public\" and \"internal\" endpoints correspond to these different networks. The Manila API behaves the same way, no matter the interface.","commit_id":"bb413c16f58841352ad9816ec6da0f46fd516489"}],"etc/manila/api-paste.ini":[{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"ce0b385c8ca58ec7bf3bd227fbd3265b5d25617f","unresolved":true,"context_lines":[{"line_number":28,"context_line":"paste.filter_factory \u003d manila.api.middleware.auth:NoAuthMiddleware.factory"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"[filter:noauthv2]"},{"line_number":31,"context_line":"paste.filter_factory \u003d manila.api.middleware.auth:NoAuthMiddlewarev2_60.factory"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"[filter:sizelimit]"},{"line_number":34,"context_line":"paste.filter_factory \u003d oslo_middleware.sizelimit:RequestBodySizeLimiter.factory"}],"source_content_type":"text/x-properties","patch_set":3,"id":"e241f9b7_0b4d946b","line":31,"updated":"2021-02-04 20:13:29.000000000","message":"good idea embedding the relevant microversion in the factory name","commit_id":"bb413c16f58841352ad9816ec6da0f46fd516489"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"7e6b6f30c1ef3e936e2d0e6b469b1bbd542cdb31","unresolved":true,"context_lines":[{"line_number":28,"context_line":"paste.filter_factory \u003d manila.api.middleware.auth:NoAuthMiddleware.factory"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"[filter:noauthv2]"},{"line_number":31,"context_line":"paste.filter_factory \u003d manila.api.middleware.auth:NoAuthMiddlewarev2_60.factory"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"[filter:sizelimit]"},{"line_number":34,"context_line":"paste.filter_factory \u003d oslo_middleware.sizelimit:RequestBodySizeLimiter.factory"}],"source_content_type":"text/x-properties","patch_set":3,"id":"441e378a_899d2997","line":31,"in_reply_to":"e241f9b7_0b4d946b","updated":"2021-02-05 06:51:38.000000000","message":"yeah, works in case we need to introduce another noauth version","commit_id":"bb413c16f58841352ad9816ec6da0f46fd516489"}],"manila/api/common.py":[{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"ce0b385c8ca58ec7bf3bd227fbd3265b5d25617f","unresolved":true,"context_lines":[{"line_number":262,"context_line":""},{"line_number":263,"context_line":"    def _get_project_id(self, request):"},{"line_number":264,"context_line":"        project_id \u003d request.environ[\"manila.context\"].project_id"},{"line_number":265,"context_line":"        if project_id and project_id in request.url:"},{"line_number":266,"context_line":"            return project_id"},{"line_number":267,"context_line":"        return \u0027\u0027"},{"line_number":268,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"6b56c1fc_86886249","line":265,"updated":"2021-02-04 20:13:29.000000000","message":"Do we need to worry about the project id happening to appear in a different part of the url, like when a manila resource is used as the name of a keystone project?","commit_id":"bb413c16f58841352ad9816ec6da0f46fd516489"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"7e6b6f30c1ef3e936e2d0e6b469b1bbd542cdb31","unresolved":true,"context_lines":[{"line_number":262,"context_line":""},{"line_number":263,"context_line":"    def _get_project_id(self, request):"},{"line_number":264,"context_line":"        project_id \u003d request.environ[\"manila.context\"].project_id"},{"line_number":265,"context_line":"        if project_id and project_id in request.url:"},{"line_number":266,"context_line":"            return project_id"},{"line_number":267,"context_line":"        return \u0027\u0027"},{"line_number":268,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"a41918ca_cc76fbf3","line":265,"in_reply_to":"6b56c1fc_86886249","updated":"2021-02-05 06:51:38.000000000","message":"True, we can document that with noauth, the project_id they make up shouldn\u0027t clash with manila URI resource names. For example, you can\u0027t have a project_id called \"share\".\n\nThe only other place where I see project_id in URLs is the quota APIs where project_id can be a path parameter - however, there\u0027s no pagination support for our quota APIs, yet, so this code won\u0027t hurt them:\n\n https://docs.openstack.org/api-ref/shared-file-system/#quota-sets\n\n\nFor future proofing, I can make this better by looking for a regex that matches (/v2/project_id)","commit_id":"bb413c16f58841352ad9816ec6da0f46fd516489"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"55952a214120e10e75ea3c57f3638f0d0bd40181","unresolved":true,"context_lines":[{"line_number":262,"context_line":""},{"line_number":263,"context_line":"    def _get_project_id(self, request):"},{"line_number":264,"context_line":"        project_id \u003d request.environ[\"manila.context\"].project_id"},{"line_number":265,"context_line":"        if project_id and project_id in request.url:"},{"line_number":266,"context_line":"            return project_id"},{"line_number":267,"context_line":"        return \u0027\u0027"},{"line_number":268,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"6fa42f2b_5dd6640a","line":265,"in_reply_to":"a41918ca_cc76fbf3","updated":"2021-02-05 07:21:55.000000000","message":"a regex isn\u0027t needed, just /v2/%s % project_id :)","commit_id":"bb413c16f58841352ad9816ec6da0f46fd516489"}],"manila/api/openstack/rest_api_version_history.rst":[{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"ce0b385c8ca58ec7bf3bd227fbd3265b5d25617f","unresolved":true,"context_lines":[{"line_number":329,"context_line":"  API URLs no longer need a \"project_id\" argument in them. For example, the"},{"line_number":330,"context_line":"  API route: https://$(controller)s/share/v2/$(project_id)s/shares is"},{"line_number":331,"context_line":"  equivalent to https://$(controller)s/share/v2/shares. When interacting"},{"line_number":332,"context_line":"  with the manila service as system scoped users, project_id should not be"},{"line_number":333,"context_line":"  specified in the API path."}],"source_content_type":"text/x-rst","patch_set":3,"id":"91d5cc6a_b8f65996","line":332,"updated":"2021-02-04 20:13:29.000000000","message":"as system or domain scoped users?  To future proof?  Your call.","commit_id":"bb413c16f58841352ad9816ec6da0f46fd516489"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"7e6b6f30c1ef3e936e2d0e6b469b1bbd542cdb31","unresolved":true,"context_lines":[{"line_number":329,"context_line":"  API URLs no longer need a \"project_id\" argument in them. For example, the"},{"line_number":330,"context_line":"  API route: https://$(controller)s/share/v2/$(project_id)s/shares is"},{"line_number":331,"context_line":"  equivalent to https://$(controller)s/share/v2/shares. When interacting"},{"line_number":332,"context_line":"  with the manila service as system scoped users, project_id should not be"},{"line_number":333,"context_line":"  specified in the API path."}],"source_content_type":"text/x-rst","patch_set":3,"id":"aa1541f0_226834b2","line":332,"in_reply_to":"91d5cc6a_b8f65996","updated":"2021-02-05 06:51:38.000000000","message":"+1, will change this","commit_id":"bb413c16f58841352ad9816ec6da0f46fd516489"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"4f670aa603ec19ec7bacc32866431b2aa21050de","unresolved":true,"context_lines":[{"line_number":329,"context_line":"  API URLs no longer need a \"project_id\" argument in them. For example, the"},{"line_number":330,"context_line":"  API route: https://$(controller)s/share/v2/$(project_id)s/shares is"},{"line_number":331,"context_line":"  equivalent to https://$(controller)s/share/v2/shares. When interacting"},{"line_number":332,"context_line":"  with the manila service as system or domain scoped users, project_id should"},{"line_number":333,"context_line":"  not be specified in the API path."}],"source_content_type":"text/x-rst","patch_set":5,"id":"6c50be0e_2d8b8eed","line":332,"range":{"start_line":332,"start_character":29,"end_line":332,"end_character":58},"updated":"2021-02-05 21:33:30.000000000","message":"What happens if I use a project-scoped token without putting the project ID in the path?","commit_id":"263d5438f0df0a13bb71a154034aa8d071609b65"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"54fbca0d9bcc942c94a53dc771940a7f61fc6095","unresolved":true,"context_lines":[{"line_number":329,"context_line":"  API URLs no longer need a \"project_id\" argument in them. For example, the"},{"line_number":330,"context_line":"  API route: https://$(controller)s/share/v2/$(project_id)s/shares is"},{"line_number":331,"context_line":"  equivalent to https://$(controller)s/share/v2/shares. When interacting"},{"line_number":332,"context_line":"  with the manila service as system or domain scoped users, project_id should"},{"line_number":333,"context_line":"  not be specified in the API path."}],"source_content_type":"text/x-rst","patch_set":5,"id":"ca968d1e_6c7207d5","line":332,"range":{"start_line":332,"start_character":29,"end_line":332,"end_character":58},"in_reply_to":"6c50be0e_2d8b8eed","updated":"2021-02-05 21:38:41.000000000","message":"that\u0027s fine - but if you do use project_id in the URL, it should be your own project_id. \n\nSee the regression tests on this patch without project_id in the URLs: https://review.opendev.org/c/openstack/manila/+/773986","commit_id":"263d5438f0df0a13bb71a154034aa8d071609b65"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"1152dbc861e712fe319c0c743fc82815fcd00919","unresolved":true,"context_lines":[{"line_number":329,"context_line":"  API URLs no longer need a \"project_id\" argument in them. For example, the"},{"line_number":330,"context_line":"  API route: https://$(controller)s/share/v2/$(project_id)s/shares is"},{"line_number":331,"context_line":"  equivalent to https://$(controller)s/share/v2/shares. When interacting"},{"line_number":332,"context_line":"  with the manila service as system or domain scoped users, project_id should"},{"line_number":333,"context_line":"  not be specified in the API path."}],"source_content_type":"text/x-rst","patch_set":5,"id":"1fc1b4bd_ae17c707","line":332,"range":{"start_line":332,"start_character":29,"end_line":332,"end_character":58},"in_reply_to":"ca968d1e_6c7207d5","updated":"2021-02-05 21:46:29.000000000","message":"Lance knows this since he pointed it out to me, but, for others looking - \n\nThis is the place we enforce that the caller\u0027s project_id in the URL is the same as that we derive from their token: https://opendev.org/openstack/manila/src/commit/39efc2bde81c2a0c747a491d3a778b822ca263b8/manila/api/openstack/wsgi.py#L817-L821","commit_id":"263d5438f0df0a13bb71a154034aa8d071609b65"}],"manila/api/v2/router.py":[{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"4c6e4d06acbe172a069d2ea4aa3f446841284f71","unresolved":true,"context_lines":[{"line_number":182,"context_line":"                           action\u003d\"index\","},{"line_number":183,"context_line":"                           conditions\u003d{\"method\": [\"GET\"]})"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"            mapper.connect(\"share_instances\","},{"line_number":186,"context_line":"                           (\"%s/share_instances/{share_instance_id}\""},{"line_number":187,"context_line":"                            \"/export_locations\" % path_prefix),"},{"line_number":188,"context_line":"                           controller\u003dself.resources["},{"line_number":189,"context_line":"                               \"share_instance_export_locations\"],"},{"line_number":190,"context_line":"                           action\u003d\"index\","},{"line_number":191,"context_line":"                           conditions\u003d{\"method\": [\"GET\"]})"},{"line_number":192,"context_line":"            mapper.connect(\"share_instances\","},{"line_number":193,"context_line":"                           (\"%s/share_instances/{share_instance_id}\""},{"line_number":194,"context_line":"                            \"/export_locations\""}],"source_content_type":"text/x-python","patch_set":3,"id":"fce959d2_22798ce4","line":191,"range":{"start_line":185,"start_character":0,"end_line":191,"end_character":58},"updated":"2021-02-04 22:21:04.000000000","message":"isn\u0027t this one duplicated?","commit_id":"bb413c16f58841352ad9816ec6da0f46fd516489"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"7e6b6f30c1ef3e936e2d0e6b469b1bbd542cdb31","unresolved":true,"context_lines":[{"line_number":182,"context_line":"                           action\u003d\"index\","},{"line_number":183,"context_line":"                           conditions\u003d{\"method\": [\"GET\"]})"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"            mapper.connect(\"share_instances\","},{"line_number":186,"context_line":"                           (\"%s/share_instances/{share_instance_id}\""},{"line_number":187,"context_line":"                            \"/export_locations\" % path_prefix),"},{"line_number":188,"context_line":"                           controller\u003dself.resources["},{"line_number":189,"context_line":"                               \"share_instance_export_locations\"],"},{"line_number":190,"context_line":"                           action\u003d\"index\","},{"line_number":191,"context_line":"                           conditions\u003d{\"method\": [\"GET\"]})"},{"line_number":192,"context_line":"            mapper.connect(\"share_instances\","},{"line_number":193,"context_line":"                           (\"%s/share_instances/{share_instance_id}\""},{"line_number":194,"context_line":"                            \"/export_locations\""}],"source_content_type":"text/x-python","patch_set":3,"id":"1870677b_65bf208c","line":191,"range":{"start_line":185,"start_character":0,"end_line":191,"end_character":58},"in_reply_to":"fce959d2_22798ce4","updated":"2021-02-05 06:51:38.000000000","message":"you\u0027re right! I\u0027ll remove it","commit_id":"bb413c16f58841352ad9816ec6da0f46fd516489"}],"manila/tests/conf_fixture.py":[{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"ce0b385c8ca58ec7bf3bd227fbd3265b5d25617f","unresolved":true,"context_lines":[{"line_number":42,"context_line":"    wsgi.register_opts(conf)"},{"line_number":43,"context_line":"    _safe_set_of_opts(conf, \u0027api_paste_config\u0027, _API_PASTE_PATH)"},{"line_number":44,"context_line":"    # we use \"fake\" and \"openstack\" as project ID in a number of tests"},{"line_number":45,"context_line":"    _safe_set_of_opts(conf, \u0027project_id_regex\u0027, r\"[0-9a-fopnstk\\-]+\")"},{"line_number":46,"context_line":"    _safe_set_of_opts(conf, \u0027share_driver\u0027,"},{"line_number":47,"context_line":"                      \u0027manila.tests.fake_driver.FakeShareDriver\u0027)"},{"line_number":48,"context_line":"    _safe_set_of_opts(conf, \u0027auth_strategy\u0027, \u0027noauth\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"6c2cb31d_2310d30b","line":45,"updated":"2021-02-04 20:13:29.000000000","message":"I was wondering how you were going to handle compatibility with our current fake project IDs in tests :D","commit_id":"bb413c16f58841352ad9816ec6da0f46fd516489"}],"manila/tests/integrated/api/client.py":[{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"ce0b385c8ca58ec7bf3bd227fbd3265b5d25617f","unresolved":true,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    \"\"\""},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def __init__(self, auth_user, auth_key, endpoint):"},{"line_number":75,"context_line":"        super(TestOpenStackClient, self).__init__()"},{"line_number":76,"context_line":"        self.auth_result \u003d None"},{"line_number":77,"context_line":"        self.auth_user \u003d auth_user"}],"source_content_type":"text/x-python","patch_set":3,"id":"95377bf0_6cd59ccd","line":74,"updated":"2021-02-04 20:13:29.000000000","message":"Thank you (for making \u0027www_authenicate_uri\u0027 go away).","commit_id":"bb413c16f58841352ad9816ec6da0f46fd516489"}],"releasenotes/notes/bp-remove-project-id-from-urls-9f338371b8ffa203.yaml":[{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"ce0b385c8ca58ec7bf3bd227fbd3265b5d25617f","unresolved":true,"context_lines":[{"line_number":23,"context_line":"    UUIDs with and without dashes, therefore covering the formats supported"},{"line_number":24,"context_line":"    by the OpenStack Identity service. If your cloud uses other formats, set"},{"line_number":25,"context_line":"    this configuration option accordingly, or remove project_id from the"},{"line_number":26,"context_line":"    manila endpoint URL in your service catalog."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"692ff134_2f32e06f","line":26,"updated":"2021-02-04 20:13:29.000000000","message":"Seems well thought out, thanks for covering these upgrade possibilities.","commit_id":"bb413c16f58841352ad9816ec6da0f46fd516489"}]}
