)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d2d213b743eb89f40492af50db208972cb6a9a00","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"0590f398_04392ba4","updated":"2023-09-04 16:29:46.000000000","message":"Looks pretty good now. Just some questions inline","commit_id":"c8809a38aa646ff7300b022d2748f3c4cd5fb736"}],"openstack/tests/unit/test_utils.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d2d213b743eb89f40492af50db208972cb6a9a00","unresolved":true,"context_lines":[{"line_number":195,"context_line":"    def setUp(self):"},{"line_number":196,"context_line":"        super().setUp()"},{"line_number":197,"context_line":"        # MV enabled endpoint"},{"line_number":198,"context_line":"        self.mv_adapter \u003d mock.Mock(spec\u003d[\u0027get_endpoint_data\u0027])"},{"line_number":199,"context_line":"        self.mv_endpoint_data \u003d mock.Mock("},{"line_number":200,"context_line":"            spec\u003d[\u0027api_version\u0027, \u0027min_microversion\u0027, \u0027max_microversion\u0027],"},{"line_number":201,"context_line":"            api_version\u003d(1, 1),"}],"source_content_type":"text/x-python","patch_set":2,"id":"bdedd668_b2117932","line":198,"range":{"start_line":198,"start_character":41,"end_line":198,"end_character":62},"updated":"2023-09-04 16:29:46.000000000","message":"Rather than doing this, perhaps we should do\n\n```\nspec\u003dadapter.Adapter\n```\n\n?","commit_id":"c8809a38aa646ff7300b022d2748f3c4cd5fb736"}],"openstack/utils.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d2d213b743eb89f40492af50db208972cb6a9a00","unresolved":true,"context_lines":[{"line_number":287,"context_line":""},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"def check_version_constraints("},{"line_number":290,"context_line":"    adapter, min_version\u003dNone, max_version\u003dNone, current_version\u003dNone"},{"line_number":291,"context_line":"):"},{"line_number":292,"context_line":"    \"\"\"Determine if the given adapter supports given version restrictions"},{"line_number":293,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"6cdb4c97_02b8d1bf","line":290,"updated":"2023-09-04 16:29:46.000000000","message":"Can you add type annotations? Also, these parameters might make more sense as kwarg-only arguments, since it\u0027ll be easier to grok the more verbose code (IMO). So\n\n```python\ndef check_version_constraints(\n    adapter: ks_adapter.Adapter,\n    *,\n    min_version: ty.Optional[str],\n    max_version: ty.Optional[str],\n    current_version: ty.Optional[str],\n) -\u003e bool:\n```\n\nFinally, do we want to support the `raise_exception` parameter? Do we make any use of this currently?","commit_id":"c8809a38aa646ff7300b022d2748f3c4cd5fb736"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d2d213b743eb89f40492af50db208972cb6a9a00","unresolved":true,"context_lines":[{"line_number":298,"context_line":""},{"line_number":299,"context_line":"    When adapter does not support microversions verify min_version or"},{"line_number":300,"context_line":"    max_version matches adapter api_version."},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"    :param adapter: :class:`~keystoneauth1.adapter.Adapter` instance."},{"line_number":303,"context_line":"    :param str min_version: String containing the minimal required"},{"line_number":304,"context_line":"        version or microversion."}],"source_content_type":"text/x-python","patch_set":2,"id":"f2f78a34_873ae363","line":301,"updated":"2023-09-04 16:29:46.000000000","message":"So this takes no consideration of the `Adapter.default_microversion`. Is that expected? Do we want to call it out? Is the expectation that we will manually pass `current_version\u003dadapter.default_microversion` where we call this or something else?","commit_id":"c8809a38aa646ff7300b022d2748f3c4cd5fb736"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"fae676dbf6b81748ea9c0bdd61bb1fcd3a498e9f","unresolved":true,"context_lines":[{"line_number":348,"context_line":"            return discover.version_match(ver, endpoint_data.api_version)"},{"line_number":349,"context_line":"        if max_version:"},{"line_number":350,"context_line":"            ver \u003d discover.normalize_version_number(max_version)"},{"line_number":351,"context_line":"            return discover.version_match(ver, endpoint_data.api_version)"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"    return False"},{"line_number":354,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"905b91fb_2e936154","line":351,"updated":"2023-11-11 15:57:28.000000000","message":"I\u0027m not sure about this logic. If `max_version` is `2.1` and the server version is `2.3`, doesn\u0027t that suggest the server no longer supports \u00272.1\u0027. The caveat to this is that e.g. glance supports multiple given API versions at a given time (they last bumped the min version to 2.11 in I1e200c47f20ec6945981dbd92f859cfec234e42d). The `get_endpoint_data` method only returns the currently selected API version, so we probably want to check the service catalog to inspect all possible API versions for the service?","commit_id":"c8809a38aa646ff7300b022d2748f3c4cd5fb736"}],"releasenotes/notes/add-check-version-constraints-method-e0f5b30619168247.yaml":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1b100569da564bfce01b6eb4f9e73adf772733f7","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    A new universal method for version handling ``check_version_constraints``"},{"line_number":5,"context_line":"    has been added. It works for services that support microversion and the"},{"line_number":6,"context_line":"    ones that are not having microversions concept. In a short transition"},{"line_number":7,"context_line":"    period this new method will replace other specialized method."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"258e43fe_0f4dbed1","line":4,"range":{"start_line":4,"start_character":50,"end_line":4,"end_character":75},"updated":"2023-08-25 09:55:10.000000000","message":"Maybe give the full module path?\n\n\u003e A new universal method for version handling, ``check_version_constraints``,\n\u003e has been added to the ``openstack.utils`` module. It works...","commit_id":"db10763439b2426ff6ce01ddf1f0133b5020d55e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1b100569da564bfce01b6eb4f9e73adf772733f7","unresolved":true,"context_lines":[{"line_number":16,"context_line":"    - ``pick_microversion``"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"    Their usage should be replaced with newly added"},{"line_number":19,"context_line":"    ``check_version_constraints`` method."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"79233be2_1c775f81","line":19,"updated":"2023-08-25 09:55:10.000000000","message":"No point documenting these are deprecated until there\u0027s code in place to deprecate them, which we can\u0027t do until we\u0027ve migrated our own usage of these. Perhaps put this into a separate WIP change for now?","commit_id":"db10763439b2426ff6ce01ddf1f0133b5020d55e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d2d213b743eb89f40492af50db208972cb6a9a00","unresolved":false,"context_lines":[{"line_number":16,"context_line":"    - ``pick_microversion``"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"    Their usage should be replaced with newly added"},{"line_number":19,"context_line":"    ``check_version_constraints`` method."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"ed7bbb16_4f12f20a","line":19,"in_reply_to":"79233be2_1c775f81","updated":"2023-09-04 16:29:46.000000000","message":"Done","commit_id":"db10763439b2426ff6ce01ddf1f0133b5020d55e"}]}
