)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1a26d83e74457a1677cdb5d9f40baa9c211f0c98","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"96c8551f_24e129b2","updated":"2024-12-18 16:16:10.000000000","message":"Thanks for taking a look at this. I rebase the change to resolve some merge conflicts but made no other significant changes. The approach you\u0027ve come up needs to be rethought, but I hope we\u0027ll be able to work together towards a solution. Please let me know if anything isn\u0027t clear","commit_id":"1d0d949ec8fa07f22ceb77a68689db0069001686"}],"openstack/dns/v2/_proxy.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1a26d83e74457a1677cdb5d9f40baa9c211f0c98","unresolved":true,"context_lines":[{"line_number":368,"context_line":"        :returns: ZoneExport instance."},{"line_number":369,"context_line":"        :rtype: :class:`~openstack.dns.v2.zone_export.ZoneExport`"},{"line_number":370,"context_line":"        \"\"\""},{"line_number":371,"context_line":"        response_zone_export \u003d self._get("},{"line_number":372,"context_line":"            _zone_export.ZoneExport,"},{"line_number":373,"context_line":"            zone_export,"},{"line_number":374,"context_line":"            base_path\u003d\"/zones/tasks/exports/%(zone_export_id)s/export\","},{"line_number":375,"context_line":"            requires_id\u003dFalse,"},{"line_number":376,"context_line":"            zone_export_id\u003dzone_export,"},{"line_number":377,"context_line":"        )"},{"line_number":378,"context_line":"        return response_zone_export.text"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"    def delete_zone_export(self, zone_export, ignore_missing\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":1,"id":"bd26777a_d7af3a65","line":377,"range":{"start_line":371,"start_character":0,"end_line":377,"end_character":9},"updated":"2024-12-18 16:16:10.000000000","message":"This shouldn\u0027t be needed: the `_get` call is extracting the ID from the second argument (`zone_export`) and using this to populate the base path. Why this change?\n\nLater: I think what\u0027s happening here is that you\u0027re trying to use the ZoneExport resource when in fact this is an entirely different kind of resource. I have some suggestions for how to resolve this a different way on the next file.","commit_id":"a959ee9538553d857996085cec1eb3eb800622d6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1a26d83e74457a1677cdb5d9f40baa9c211f0c98","unresolved":true,"context_lines":[{"line_number":375,"context_line":"            requires_id\u003dFalse,"},{"line_number":376,"context_line":"            zone_export_id\u003dzone_export,"},{"line_number":377,"context_line":"        )"},{"line_number":378,"context_line":"        return response_zone_export.text"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"    def delete_zone_export(self, zone_export, ignore_missing\u003dTrue):"},{"line_number":381,"context_line":"        \"\"\"Delete a zone export"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f1c10a5_e0bb2959","line":378,"updated":"2024-12-18 16:16:10.000000000","message":"This is changing the response type. You need to update the docstring, add a release note and update the tests in order to do this.","commit_id":"a959ee9538553d857996085cec1eb3eb800622d6"}],"openstack/dns/v2/zone_export.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1a26d83e74457a1677cdb5d9f40baa9c211f0c98","unresolved":true,"context_lines":[{"line_number":31,"context_line":"    _query_mapping \u003d resource.QueryParameters(\u0027zone_id\u0027, \u0027message\u0027, \u0027status\u0027)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    #: Properties"},{"line_number":34,"context_line":"    #: zone_export_id"},{"line_number":35,"context_line":"    zone_export_id \u003d resource.URI(\u0027zone_export_id\u0027)"},{"line_number":36,"context_line":"    #: Timestamp when the zone was created"},{"line_number":37,"context_line":"    created_at \u003d resource.Body(\u0027created_at\u0027)"},{"line_number":38,"context_line":"    #: Links contains a `self` pertaining to this zone or a `next` pertaining"}],"source_content_type":"text/x-python","patch_set":2,"id":"fbf814f5_beb9b5ec","line":35,"range":{"start_line":34,"start_character":1,"end_line":35,"end_character":51},"updated":"2024-12-18 16:16:10.000000000","message":"I know why you\u0027re doing this but it\u0027s not going to work: you\u0027re combining two very different resources into one.\n\nZone exports are available as a traditional JSON reponse ([docs](https://docs.openstack.org/api-ref/dns/dns-api-v2-index.html)). However, they can also be got in text format. Could you simply add a helper method on this class to fetch the result in text format. You could simply call it `as_text`. Have a look at e.g. the `Flavor.get_access` method in `openstack/compute/v2/flavor.py` for an example of how to fetch a \"sub-resource\" from an existing resource.","commit_id":"1d0d949ec8fa07f22ceb77a68689db0069001686"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1a26d83e74457a1677cdb5d9f40baa9c211f0c98","unresolved":true,"context_lines":[{"line_number":87,"context_line":"        self._translate_response(response)"},{"line_number":88,"context_line":"        return self"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def _translate_response("},{"line_number":91,"context_line":"        self,"},{"line_number":92,"context_line":"        response,"},{"line_number":93,"context_line":"        has_body\u003dNone,"},{"line_number":94,"context_line":"        error_message\u003dNone,"},{"line_number":95,"context_line":"        *,"},{"line_number":96,"context_line":"        resource_response_key\u003dNone,"},{"line_number":97,"context_line":"    ):"},{"line_number":98,"context_line":"        \"\"\"Given a KSA response, inflate this instance with its data"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        DELETE operations don\u0027t return a body, so only try to work"},{"line_number":101,"context_line":"        with a body when has_body is True."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        This method updates attributes that correspond to headers"},{"line_number":104,"context_line":"        and body on this instance and clears the dirty set."},{"line_number":105,"context_line":"        \"\"\""},{"line_number":106,"context_line":"        if has_body is None:"},{"line_number":107,"context_line":"            has_body \u003d self.has_body"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        exceptions.raise_from_response(response, error_message\u003derror_message)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        if has_body:"},{"line_number":112,"context_line":"            try:"},{"line_number":113,"context_line":"                if ("},{"line_number":114,"context_line":"                    response.headers[\u0027Content-Type\u0027]"},{"line_number":115,"context_line":"                    \u003d\u003d \u0027text/dns; charset\u003dUTF-8\u0027"},{"line_number":116,"context_line":"                ):"},{"line_number":117,"context_line":"                    self.text \u003d response.text"},{"line_number":118,"context_line":"                    return"},{"line_number":119,"context_line":"                else:"},{"line_number":120,"context_line":"                    body \u003d response.json()"},{"line_number":121,"context_line":"                    if resource_response_key and resource_response_key in body:"},{"line_number":122,"context_line":"                        body \u003d response.json()"},{"line_number":123,"context_line":"                        body \u003d body[resource_response_key]"},{"line_number":124,"context_line":"                    elif self.resource_key and self.resource_key in body:"},{"line_number":125,"context_line":"                        body \u003d body[self.resource_key]"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"                # Do not allow keys called \"self\" through. Glance chose"},{"line_number":128,"context_line":"                # to name a key \"self\", so we need to pop it out because"},{"line_number":129,"context_line":"                # we can\u0027t send it through cls.existing and into the"},{"line_number":130,"context_line":"                # Resource initializer. \"self\" is already the first"},{"line_number":131,"context_line":"                # argument and is practically a reserved word."},{"line_number":132,"context_line":"                body.pop(\"self\", None)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"                body_attrs \u003d self._consume_body_attrs(body)"},{"line_number":135,"context_line":"                if self._allow_unknown_attrs_in_body:"},{"line_number":136,"context_line":"                    body_attrs.update(body)"},{"line_number":137,"context_line":"                    self._unknown_attrs_in_body.update(body)"},{"line_number":138,"context_line":"                elif self._store_unknown_attrs_as_properties:"},{"line_number":139,"context_line":"                    body_attrs \u003d self._pack_attrs_under_properties("},{"line_number":140,"context_line":"                        body_attrs, body"},{"line_number":141,"context_line":"                    )"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"                self._body.attributes.update(body_attrs)"},{"line_number":144,"context_line":"                self._body.clean()"},{"line_number":145,"context_line":"                if self.commit_jsonpatch or self.allow_patch:"},{"line_number":146,"context_line":"                    # We need the original body to compare against"},{"line_number":147,"context_line":"                    self._original_body \u003d body_attrs.copy()"},{"line_number":148,"context_line":"            except ValueError:"},{"line_number":149,"context_line":"                # Server returned not parse-able response (202, 204, etc)"},{"line_number":150,"context_line":"                # Do simply nothing"},{"line_number":151,"context_line":"                pass"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        headers \u003d self._consume_header_attrs(response.headers)"},{"line_number":154,"context_line":"        self._header.attributes.update(headers)"},{"line_number":155,"context_line":"        self._header.clean()"},{"line_number":156,"context_line":"        self._update_location()"},{"line_number":157,"context_line":"        dict.update(self, self.to_dict())"}],"source_content_type":"text/x-python","patch_set":2,"id":"54e3b91b_81b8131e","line":157,"range":{"start_line":90,"start_character":0,"end_line":157,"end_character":41},"updated":"2024-12-18 16:16:10.000000000","message":"I don\u0027t know why any of this is here but I suspect you don\u0027t want it, per my comment above. If you do, please add a comment explaining what you\u0027re doing and why.","commit_id":"1d0d949ec8fa07f22ceb77a68689db0069001686"}]}
