)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"458fc651ead4561ca7a226ba4164c7baf374d968","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"888c68ef_34f40075","updated":"2023-11-03 10:26:29.000000000","message":"Just FYI there\u0027s a `Header` component that can be used for exactly this purpose. Maybe take a look a look at existing examples of this. A quick grep suggests zaqar (`openstack/message`) does this. Is there something that that doesn\u0027t satisfy.\n\nAlso, don\u0027t forget the release note whatever approach you take.","commit_id":"4065d70a643372b63e616dc04864919869ac7850"},{"author":{"_account_id":33634,"name":"Jan Hartkopf","email":"j@hartkopf.io","username":"jhartkopf"},"change_message_id":"ffb2af6534f5e5cc191b2377a7f55d4d6a91b576","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"9900d7dc_6560400a","in_reply_to":"888c68ef_34f40075","updated":"2023-11-21 16:08:52.000000000","message":"Thanks for the hint, Stephen.\n\nI looked through the Zaqar code. Some things could be adjusted in my patch (e. g. moving the logic from DNS proxy to DNS base resource list method might be cleaner). However, I think we still need to pass the custom headers from there into the resource.Resource object because, otherwise, we would need to send the HTTP request directly in the DNS resource list method (via session.get(headers\u003d...)). This would then basically skip all the logic applied in the resource.Resource object list method.\n\nWhat was apparently done for Zaqar to circumvent this issue was to simply copy the logic from the resource.Resource object (the docstring in messages.py literally says \"This is almost the copy of list method of resource.Resource class [...]\"). I think this is not the cleanest way of doing this.\n\nInstead, I would apply the headers logic in the DNS base resource list method and pass the processed headers to its super method via the new headers parameter (or even just read the headers from **params).\n\nEven if we would try to use resource.Header objects, I think we could not access those in the list method since it is a class method.\n\nPlease let me know if I missed something here.","commit_id":"4065d70a643372b63e616dc04864919869ac7850"},{"author":{"_account_id":32755,"name":"Christian Rohmann","email":"christian.rohmann@inovex.de","username":"frittentheke"},"change_message_id":"f5a3533de954f55fd9fcb8a4bf6228329edbf7c6","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"9ef44787_63a66a3c","updated":"2024-02-21 13:39:25.000000000","message":"@Michael and others from Designate. Do you see any chance project switching via the Designate could be aligned with how other projects do it to avoid being a special case in the OpenstackSDK for now and forever ?","commit_id":"1e62d4015b82320d63b9d18fed7db0f290aaf39b"},{"author":{"_account_id":33634,"name":"Jan Hartkopf","email":"j@hartkopf.io","username":"jhartkopf"},"change_message_id":"a7853fb0ca2b0b95c145664b8c8977004d6fc9fb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"f9cc9605_6efe3537","updated":"2024-02-21 12:40:19.000000000","message":"Any chance of getting this reviewed/merged?","commit_id":"1e62d4015b82320d63b9d18fed7db0f290aaf39b"},{"author":{"_account_id":32755,"name":"Christian Rohmann","email":"christian.rohmann@inovex.de","username":"frittentheke"},"change_message_id":"3f2fe2aa4a457ca9d250c7749bb8f2934a9b63b7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"8bd7b7eb_4dac359f","updated":"2024-02-23 09:04:35.000000000","message":"Artem, Michael ... Do you mind taking a look at my comment at https://review.opendev.org/c/openstack/openstacksdk/+/899027/comments/9ef44787_63a66a3c to see if I did not trivialize the issue too much.","commit_id":"1e62d4015b82320d63b9d18fed7db0f290aaf39b"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"997c6f6a52fd5e178c99a06a505153b5622bbd7d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"105818ff_591f5be1","updated":"2024-02-21 13:06:24.000000000","message":"I hate this really (not the change, but the concept). It is going to screw us all again sometime.\n\nwrt the change: please add unittest verifying the headers are really passed","commit_id":"1e62d4015b82320d63b9d18fed7db0f290aaf39b"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"743b8659c2cd95aaf3b72fc33b37869d85017afe","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"8331c080_e780421c","updated":"2024-02-22 19:50:38.000000000","message":"I think this is ok.","commit_id":"1e62d4015b82320d63b9d18fed7db0f290aaf39b"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"a764d4ffa7d00cf897a5d28ae1baa74d8694f5eb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"7b78e2eb_4f36faaf","updated":"2024-02-27 14:55:57.000000000","message":"We agreed to make an exception and accept it, but definitely not before unit tests are going to be added","commit_id":"1e62d4015b82320d63b9d18fed7db0f290aaf39b"},{"author":{"_account_id":32755,"name":"Christian Rohmann","email":"christian.rohmann@inovex.de","username":"frittentheke"},"change_message_id":"5fea05e03aa54af9cece839bc38e916b1d95424e","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"7c97d30b_fb8d9580","in_reply_to":"105818ff_591f5be1","updated":"2024-02-22 08:06:05.000000000","message":"I tried to raise attention with the Designate folks, about this. Question is, would they merge a change to (also ?) add the usual way of project switching to the Designate API and allow OpenstackSDK to work as usual?","commit_id":"1e62d4015b82320d63b9d18fed7db0f290aaf39b"},{"author":{"_account_id":32755,"name":"Christian Rohmann","email":"christian.rohmann@inovex.de","username":"frittentheke"},"change_message_id":"3f2fe2aa4a457ca9d250c7749bb8f2934a9b63b7","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"53b1b28d_3b237456","in_reply_to":"1c4237e3_ec61be55","updated":"2024-02-23 09:04:35.000000000","message":"Thanks a lot Michael for looking into this!\n\n1) Other projects support the filtering on project_id by using this as query parameter, see:\n\n* Neutron: https://docs.openstack.org/api-ref/network/v2/index.html#id68\n\n* Nova: https://docs.openstack.org/api-ref/compute/?expanded\u003dforce-migration-complete-action-force-complete-action-detail#list-server-request\n\n* Cinder: https://docs.openstack.org/api-ref/block-storage/v3/#id108\n\n\nI suppose adding this to Designate would only require the extension of the `_extract_sudo` method in the middleware at https://github.com/openstack/designate/blob/91f7d7d3fb3c39c6897f1508ce390c2dcbbd8759/designate/api/middleware.py#L56 ?\n\nIf so, would you accept a patch adding this?\n\n\n\n2) Yes, this is likely a meta issue. I don\u0027t know anything about the api-wg. But technically aligning Designate with what \u003cs\u003eall\u003c/s\u003e most other projects do can\u0027t hurt right? See 1) again please ;-)\n\nMay I also point you to the push that Artem is doing for getting auto-generated (!) OpenAPI specs generated from code: https://lists.openstack.org/archives/list/openstack-discuss@lists.openstack.org/thread/UTA7RJCNFVT52EUUGNELDLDNVOHAFCGZ/\n\nI believe this is an absolutely awesome idea. OpenStackSDK (and Gophercloud for that matter) already have made writing one\u0027s own tooling and also any manual interaction with an OpenStack cloud easier. But there are still lots of differences in the signature of the APIs. Extending on that idea, even the central and reference abstraction library should not have to deal with lots of special cases. Be it due to an OpenStack project doing something different or some cloud provider being one special snowflake.","commit_id":"1e62d4015b82320d63b9d18fed7db0f290aaf39b"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"7fc262b17236218831d9f994d231525796f14345","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"1c4237e3_ec61be55","in_reply_to":"9ef44787_63a66a3c","updated":"2024-02-22 17:04:51.000000000","message":"Can you provide an example of what \"other projects\" are doing?\nThese headers are over 10 years old in the API and as I remember designate was the only project that had this capability. We certainly can\u0027t remove this method, but if there is another method that provides the same capability we could consider adding it.\nNova for example, has no way to create a server on behalf of another project.\nLikewise, nova has \"all_tenants\" as a query parameter on list, but neutron does not.\nI think this is a meta-issue across all of the services and something that should be standardized via the api-wg (if there is a member left)","commit_id":"1e62d4015b82320d63b9d18fed7db0f290aaf39b"},{"author":{"_account_id":32755,"name":"Christian Rohmann","email":"christian.rohmann@inovex.de","username":"frittentheke"},"change_message_id":"9c6807e311d765f94661d8e25fc868406c700e72","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"9d753baa_63a2497a","updated":"2024-04-29 11:50:41.000000000","message":"Any chance we could get this one reviewed and merged?","commit_id":"e7bdb02f90de6d7839fadd2dff8e6019a5d8b74e"},{"author":{"_account_id":33634,"name":"Jan Hartkopf","email":"j@hartkopf.io","username":"jhartkopf"},"change_message_id":"a8a06f022f9a50b1ae79d86a280f6f2ddd05b2e7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"b0887a2e_1a2bf7c1","updated":"2024-02-27 16:29:22.000000000","message":"I have added unit tests for the resource.Resource and DNS resource objects.\nThe DNS-specific test resides in the general test_resource.py for now. Please let me know whether there is a better location for it.","commit_id":"e7bdb02f90de6d7839fadd2dff8e6019a5d8b74e"},{"author":{"_account_id":33634,"name":"Jan Hartkopf","email":"j@hartkopf.io","username":"jhartkopf"},"change_message_id":"6b95a2f96eb6206ec9330697b4b5b829753674fb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"217050ca_d4efe9ad","updated":"2024-05-28 15:19:05.000000000","message":"recheck","commit_id":"e7bdb02f90de6d7839fadd2dff8e6019a5d8b74e"},{"author":{"_account_id":33634,"name":"Jan Hartkopf","email":"j@hartkopf.io","username":"jhartkopf"},"change_message_id":"fbb062ba0c85126bdf2a0d8f15f38ab82288e038","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"7ad6add1_4c2d2bd1","updated":"2024-05-28 13:42:15.000000000","message":"recheck","commit_id":"e7bdb02f90de6d7839fadd2dff8e6019a5d8b74e"}],"openstack/dns/v2/_base.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b8c978f1b652e4e5effba02e2f504b288c719be2","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    def list("},{"line_number":75,"context_line":"        cls,"},{"line_number":76,"context_line":"        session,"},{"line_number":77,"context_line":"        **params,"},{"line_number":78,"context_line":"    ):"},{"line_number":79,"context_line":"        project_id \u003d params.get(\"project_id\", None)"},{"line_number":80,"context_line":"        all_projects \u003d params.get(\"all_projects\", None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"f178abe7_311471d4","line":77,"updated":"2024-01-10 08:46:05.000000000","message":"Please make project_id and all_projects explicit params rather than hiding them inside **params","commit_id":"ec525889de3a32f4429ae17989d508a1814695c7"},{"author":{"_account_id":33634,"name":"Jan Hartkopf","email":"j@hartkopf.io","username":"jhartkopf"},"change_message_id":"aff9792ff284235919af24652ab71206717488a0","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    def list("},{"line_number":75,"context_line":"        cls,"},{"line_number":76,"context_line":"        session,"},{"line_number":77,"context_line":"        **params,"},{"line_number":78,"context_line":"    ):"},{"line_number":79,"context_line":"        project_id \u003d params.get(\"project_id\", None)"},{"line_number":80,"context_line":"        all_projects \u003d params.get(\"all_projects\", None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fe55fd8f_7d3f8b4f","line":77,"in_reply_to":"f178abe7_311471d4","updated":"2024-01-16 15:10:04.000000000","message":"Done","commit_id":"ec525889de3a32f4429ae17989d508a1814695c7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b8c978f1b652e4e5effba02e2f504b288c719be2","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        if all_projects:"},{"line_number":87,"context_line":"            headers[\"x-auth-all-projects\"] \u003d str(all_projects)"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        return super().list(session\u003dsession, headers\u003dheaders, **params)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    @classmethod"},{"line_number":92,"context_line":"    def _get_next_link(cls, uri, response, data, marker, limit, total_yielded):"}],"source_content_type":"text/x-python","patch_set":2,"id":"e8d6aa60_68f0e098","line":89,"updated":"2024-01-10 08:46:05.000000000","message":"Do you intend to still pass project_id and all_projects to the parent list call? Because you don\u0027t remove them from params.","commit_id":"ec525889de3a32f4429ae17989d508a1814695c7"},{"author":{"_account_id":33634,"name":"Jan Hartkopf","email":"j@hartkopf.io","username":"jhartkopf"},"change_message_id":"aff9792ff284235919af24652ab71206717488a0","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        if all_projects:"},{"line_number":87,"context_line":"            headers[\"x-auth-all-projects\"] \u003d str(all_projects)"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        return super().list(session\u003dsession, headers\u003dheaders, **params)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    @classmethod"},{"line_number":92,"context_line":"    def _get_next_link(cls, uri, response, data, marker, limit, total_yielded):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7b4ee284_e08e9d95","line":89,"in_reply_to":"e8d6aa60_68f0e098","updated":"2024-01-16 15:10:04.000000000","message":"Obsolete now with PS3, but no, this was not intended as not required.","commit_id":"ec525889de3a32f4429ae17989d508a1814695c7"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"4a98f2688bbde8e122b757d7d1480a3422f93222","unresolved":true,"context_lines":[{"line_number":80,"context_line":"        all_projects\u003dNone,"},{"line_number":81,"context_line":"        **params,"},{"line_number":82,"context_line":"    ):"},{"line_number":83,"context_line":"        headers: ty.Union[ty.Dict[str, str] | None] \u003d ("},{"line_number":84,"context_line":"            {} if project_id or all_projects else None"},{"line_number":85,"context_line":"        )"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7ff0000a_f7c1f78e","line":83,"updated":"2024-05-30 07:28:38.000000000","message":"This syntax broke python 3.8, which we don\u0027t have CI for but promise to support.","commit_id":"e7bdb02f90de6d7839fadd2dff8e6019a5d8b74e"}]}
