)]}'
{"ironicclient/common/http.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"4387534fdf7bc79d540c11b1b1559ba302d67d8a","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    :raises: UnsupportedVersion if the version requested is beyond"},{"line_number":97,"context_line":"        the maximum supported version of the library."},{"line_number":98,"context_line":"    \"\"\""},{"line_number":99,"context_line":"    if isinstance(version, str) and version !\u003d \u0027latest\u0027:"},{"line_number":100,"context_line":"        if StrictVersion(version) \u003e StrictVersion(LATEST_VERSION):"},{"line_number":101,"context_line":"            raise exc.UnsupportedVersion(textwrap.fill("},{"line_number":102,"context_line":"                _(\"Requested API version %(req)s is greater than the \""}],"source_content_type":"text/x-python","patch_set":2,"id":"7f96bb07_c501136c","line":99,"updated":"2018-01-18 09:50:47.000000000","message":"six.string_types - just to be safe","commit_id":"6ab2fad2d922e1a41d7cf30ced26801c5a785c6c"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"0b9ddd18f3c563ac48c8f3778d525a21070b1559","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    :raises: UnsupportedVersion if the version requested is beyond"},{"line_number":97,"context_line":"        the maximum supported version of the library."},{"line_number":98,"context_line":"    \"\"\""},{"line_number":99,"context_line":"    if isinstance(version, str) and version !\u003d \u0027latest\u0027:"},{"line_number":100,"context_line":"        if StrictVersion(version) \u003e StrictVersion(LATEST_VERSION):"},{"line_number":101,"context_line":"            raise exc.UnsupportedVersion(textwrap.fill("},{"line_number":102,"context_line":"                _(\"Requested API version %(req)s is greater than the \""}],"source_content_type":"text/x-python","patch_set":2,"id":"7f96bb07_c0f57358","line":99,"in_reply_to":"7f96bb07_c501136c","updated":"2018-01-18 17:38:26.000000000","message":"Yeah, Completely slipped my mind :(","commit_id":"6ab2fad2d922e1a41d7cf30ced26801c5a785c6c"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"7f5eac17820066e2e1e8d1a8877724ffdc975265","unresolved":false,"context_lines":[{"line_number":105,"context_line":"                 \u0027max\u0027: LATEST_VERSION}))"},{"line_number":106,"context_line":"    # TODO(TheJulia): At some point, if we ever add minimum version,"},{"line_number":107,"context_line":"    # that logic should likely go here."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"class VersionNegotiationMixin(object):"},{"line_number":111,"context_line":"    def negotiate_version(self, conn, resp):"}],"source_content_type":"text/x-python","patch_set":4,"id":"df7087c5_55fdffae","line":108,"updated":"2018-03-13 07:34:03.000000000","message":"Should we also validate when a list of versions is given? Currently, version\u003d[illegal] passes this validation while version\u003dillegal causes an error.","commit_id":"0d181bfa3f04ac645c2b0975141bd190ec0b1f9c"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"91d5110f5c7ce806adcb3e52600347dd1fb4560c","unresolved":false,"context_lines":[{"line_number":115,"context_line":"            if (StrictVersion(req_ver) \u003c\u003d StrictVersion(LATEST_VERSION) and"},{"line_number":116,"context_line":"                    not found):"},{"line_number":117,"context_line":"                found \u003d True"},{"line_number":118,"context_line":"            if not found:"},{"line_number":119,"context_line":"                raise_exception(version)"},{"line_number":120,"context_line":"    # TODO(TheJulia): At some point, if we ever add minimum version,"},{"line_number":121,"context_line":"    # that logic should likely go here."}],"source_content_type":"text/x-python","patch_set":5,"id":"9f6a8fd7_e2ceb758","line":118,"range":{"start_line":118,"start_character":8,"end_line":118,"end_character":12},"updated":"2018-04-23 07:34:35.000000000","message":"This line is over indented.","commit_id":"24eec9af5813e67e92ac4e0ca1be460f737236a0"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"91d5110f5c7ce806adcb3e52600347dd1fb4560c","unresolved":false,"context_lines":[{"line_number":198,"context_line":"                        StrictVersion(max_ver)))"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        elif isinstance(self.os_ironic_api_version, list):"},{"line_number":201,"context_line":"            if \u0027latest\u0027 in self.os_ironic_api_version:"},{"line_number":202,"context_line":"                raise ValueError(textwrap.fill("},{"line_number":203,"context_line":"                    _(\"The \u0027latest\u0027 API version can not be requested \""},{"line_number":204,"context_line":"                      \"in a list of versions. Please explicitly request \""}],"source_content_type":"text/x-python","patch_set":5,"id":"9f6a8fd7_4215239b","line":201,"updated":"2018-04-23 07:34:35.000000000","message":"note: We can move this validation to the new method in the future for early detection.","commit_id":"24eec9af5813e67e92ac4e0ca1be460f737236a0"}],"ironicclient/tests/unit/osc/test_plugin.py":[{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"83fa388cdae5a617df74bc4d5179130688702edd","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        # assert visibility as the library evolves."},{"line_number":86,"context_line":"        api_version \u003d StrictVersion(http.LATEST_VERSION)"},{"line_number":87,"context_line":"        osc_version \u003d StrictVersion(plugin.LATEST_VERSION)"},{"line_number":88,"context_line":"        self.assertTrue(api_version \u003e\u003d osc_version)  # noqa"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"@mock.patch.object(plugin, \u0027OS_BAREMETAL_API_LATEST\u0027, new\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f96bb07_54daf7e8","line":88,"range":{"start_line":88,"start_character":36,"end_line":88,"end_character":38},"updated":"2018-01-24 08:22:37.000000000","message":"nit: Should these versions be synced now?","commit_id":"5ccb75af73b42de974a7cdcd7860df25a3d48bf0"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"19e86cd91bfb9c8fc4b6f1f2c4c4f8f697c82991","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        # assert visibility as the library evolves."},{"line_number":86,"context_line":"        api_version \u003d StrictVersion(http.LATEST_VERSION)"},{"line_number":87,"context_line":"        osc_version \u003d StrictVersion(plugin.LATEST_VERSION)"},{"line_number":88,"context_line":"        self.assertTrue(api_version \u003e\u003d osc_version)  # noqa"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"@mock.patch.object(plugin, \u0027OS_BAREMETAL_API_LATEST\u0027, new\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"df7087c5_c932e110","line":88,"range":{"start_line":88,"start_character":36,"end_line":88,"end_character":38},"in_reply_to":"7f96bb07_54daf7e8","updated":"2018-03-13 00:08:57.000000000","message":"Great catch, thanks!","commit_id":"5ccb75af73b42de974a7cdcd7860df25a3d48bf0"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"7f5eac17820066e2e1e8d1a8877724ffdc975265","unresolved":false,"context_lines":[{"line_number":80,"context_line":"            interface\u003dinstance.interface)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def test_version_does_not_exceed_api(self):"},{"line_number":83,"context_line":"        # The underlying API code must always be at a higher or"},{"line_number":84,"context_line":"        # equal version to the internal caller. This test helps"},{"line_number":85,"context_line":"        # assert visibility as the library evolves."},{"line_number":86,"context_line":"        api_version \u003d StrictVersion(http.LATEST_VERSION)"}],"source_content_type":"text/x-python","patch_set":4,"id":"df7087c5_b2cef12a","line":83,"range":{"start_line":83,"start_character":52,"end_line":83,"end_character":63},"updated":"2018-03-13 07:34:03.000000000","message":"nit: This is no longer necessary.","commit_id":"0d181bfa3f04ac645c2b0975141bd190ec0b1f9c"}],"ironicclient/v1/client.py":[{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"bac5c9acd32c7129a55ae1a5bbaef2ee5272dcfc","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        \"\"\"Initialize a new client for the Ironic v1 API.\"\"\""},{"line_number":42,"context_line":"        allow_downgrade \u003d kwargs.pop(\u0027allow_api_version_downgrade\u0027, False)"},{"line_number":43,"context_line":"        if kwargs.get(\u0027os_ironic_api_version\u0027):"},{"line_number":44,"context_line":"            http.error_if_unsupported_version(kwargs[\u0027os_ironic_api_version\u0027])"},{"line_number":45,"context_line":"            if allow_downgrade:"},{"line_number":46,"context_line":"                # NOTE(dtantsur): here we allow the HTTP client to negotiate a"},{"line_number":47,"context_line":"                # lower version if the requested is too high"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f96bb07_57524115","line":44,"updated":"2018-01-12 09:26:48.000000000","message":"Let me confirm that we don\u0027t need to see allow_donwgrade here because this is True only when \u0027latest\u0027 is specified to CLI. A note might be helpful for review.","commit_id":"426d9551e5e00f78014dc68b25c090fa676575c1"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ddf190ded604fa6c8dd0a7a327f6f0783aaa2b63","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        \"\"\"Initialize a new client for the Ironic v1 API.\"\"\""},{"line_number":42,"context_line":"        allow_downgrade \u003d kwargs.pop(\u0027allow_api_version_downgrade\u0027, False)"},{"line_number":43,"context_line":"        if kwargs.get(\u0027os_ironic_api_version\u0027):"},{"line_number":44,"context_line":"            http.error_if_unsupported_version(kwargs[\u0027os_ironic_api_version\u0027])"},{"line_number":45,"context_line":"            if allow_downgrade:"},{"line_number":46,"context_line":"                # NOTE(dtantsur): here we allow the HTTP client to negotiate a"},{"line_number":47,"context_line":"                # lower version if the requested is too high"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f96bb07_9ccf887e","line":44,"in_reply_to":"7f96bb07_57524115","updated":"2018-01-12 14:11:49.000000000","message":"I guess we could look to see if it is a user requested version, and not a negotiated version, but I think us hitting a negotiated version that way is borderline impossible... unless someone loads the client, and begins modifying the internals in memory. Regardless, I feel like this should fail any attempt to init the client.","commit_id":"426d9551e5e00f78014dc68b25c090fa676575c1"}]}
