)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"a121a9414ad72dbbc6d802f6a3f082432dc62d6d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"a8007b03_7d793eb8","updated":"2022-05-26 21:24:04.000000000","message":"Start to get some initial reviews on this.  I know we still need tests etc., but this (and subsequent patch) will show direction.  This is based on the microversion stuff used in cinder and nova.","commit_id":"4567e8de469475b8856b9a1bd122b3c064f11b5d"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"f5b50eddc78f36b61eda11c472de3ad52f7b5c1f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"f1074bfc_a51dedab","updated":"2022-08-18 15:54:33.000000000","message":"recheck","commit_id":"9f1718d73a510b2c894024ce0e6da835d23b79f3"},{"author":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"change_message_id":"62c675d80c50ff2a38f60c05ddfc69e29243f568","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":13,"id":"9bb40a58_1c3bb512","updated":"2022-10-17 12:12:43.000000000","message":"One extra comment. During our tests with Mauricio, we got a traceback with a version key error, when we supplied a wrong endpoint URL (with an added version or version and resource address). It should probably do some sanity checks first, to throw a more user friendly error. We should also check what was the error behavior before these changes.","commit_id":"6af612110da4f8bd588b2ae1597f21491c3cd96c"},{"author":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"change_message_id":"c552c06b7285fe859a4a09f23ac27f0321eca604","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"682f6130_db25b818","updated":"2022-12-23 15:43:07.000000000","message":"We need to wait for a new keystoneauth release before we merge this.","commit_id":"a2a3d421c7a7e2bbec88f06a50ceb12038717f97"},{"author":{"_account_id":34120,"name":"Andre Aranha","display_name":"afariasa","email":"afariasa@redhat.com","username":"afariasa"},"change_message_id":"7e7895b1639791adb713c73b13015731eaac891c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"5e74f80f_0e1ee8c0","updated":"2023-01-02 10:42:42.000000000","message":"recheck","commit_id":"a2a3d421c7a7e2bbec88f06a50ceb12038717f97"},{"author":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"change_message_id":"b1b63ca8fdd1f5b28abbd350fd81e7096f8c1fbc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"0387c375_48467b60","updated":"2023-01-03 10:36:51.000000000","message":"recheck keystoneauth was released","commit_id":"a2a3d421c7a7e2bbec88f06a50ceb12038717f97"},{"author":{"_account_id":35125,"name":"Mauricio Harley","email":"mharley@redhat.com","username":"mharley-rh"},"change_message_id":"d1ffb1cc5eef26c4f69eccb2947c4d4cb69d8672","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":27,"id":"6d856899_f738485c","updated":"2023-01-03 16:12:10.000000000","message":"recheck","commit_id":"9d26cee492896cd04f173c97b4e5aead0a975f1e"}],"barbicanclient/api_versions.py":[{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"7a40349005a6e15d6c89907a73a2aebf62ed8c4d","unresolved":true,"context_lines":[{"line_number":296,"context_line":"def update_headers(headers, api_version):"},{"line_number":297,"context_line":"    \"\"\"Set \u0027OpenStack-API-Version\u0027 header if api_version is not null \"\"\""},{"line_number":298,"context_line":"    if api_version and api_version.ver_minor !\u003d 0:"},{"line_number":299,"context_line":"        headers[\"OpenStack-API-Version\"] \u003d \"volume \" + api_version.get_string()"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"def add_substitution(versioned_method):"}],"source_content_type":"text/x-python","patch_set":3,"id":"4994b603_cc22bbe3","line":299,"range":{"start_line":299,"start_character":44,"end_line":299,"end_character":50},"updated":"2022-09-02 08:42:48.000000000","message":"need to be keymanager -- or method needs to be removed","commit_id":"eac5baaf7ac21ff9d8d40a8e7e2a6d259a2c5fd2"},{"author":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"change_message_id":"4be5977060a37b319bd3e39edc57c60dd97b2817","unresolved":true,"context_lines":[{"line_number":51,"context_line":"                if match.group(2) is None:"},{"line_number":52,"context_line":"                    self.ver_minor \u003d 0"},{"line_number":53,"context_line":"                elif match.group(2) \u003d\u003d \"latest\":"},{"line_number":54,"context_line":"                    # NOTE(andreykurilin): Infinity allows to easily determine"},{"line_number":55,"context_line":"                    # latest version and doesn\u0027t require any additional checks"},{"line_number":56,"context_line":"                    # in comparison methods."},{"line_number":57,"context_line":"                    self.ver_minor \u003d float(\"inf\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ffccdc8_b2792823","line":54,"range":{"start_line":54,"start_character":27,"end_line":54,"end_character":40},"updated":"2022-09-02 19:42:21.000000000","message":"Is this module copied from somewhere else?  It may be better to update these notes since these folks probably don\u0027t know their notes are being copied here.","commit_id":"c97b07a3f797226ddfa67ee04d86f90c8a1edd9f"},{"author":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"change_message_id":"49a61617679722a5cd0e31729681d8b5b372f540","unresolved":true,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"_SUBSTITUTIONS \u003d {}"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"_type_error_msg \u003d \"\u0027%(other)s\u0027 should be an instance of \u0027%(cls)s\u0027\""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"class APIVersion(object):"}],"source_content_type":"text/x-python","patch_set":13,"id":"d7c74465_ea0c8913","line":30,"range":{"start_line":30,"start_character":20,"end_line":30,"end_character":29},"updated":"2022-10-27 17:50:15.000000000","message":"Consider using new style \"{}\" formatting instead of % operator.","commit_id":"6af612110da4f8bd588b2ae1597f21491c3cd96c"},{"author":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"change_message_id":"49a61617679722a5cd0e31729681d8b5b372f540","unresolved":true,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        if version_str is not None:"},{"line_number":47,"context_line":"            match \u003d re.match("},{"line_number":48,"context_line":"                r\"^[v]?([1-9]\\d*)[\\.]?([1-9]\\d*|0|latest)?$\", version_str)"},{"line_number":49,"context_line":"            if match:"},{"line_number":50,"context_line":"                self.ver_major \u003d int(match.group(1))"},{"line_number":51,"context_line":"                if match.group(2) is None:"}],"source_content_type":"text/x-python","patch_set":13,"id":"61fe153d_101a2b53","line":48,"range":{"start_line":48,"start_character":16,"end_line":48,"end_character":60},"updated":"2022-10-27 17:50:15.000000000","message":"This would be so much easier to read if we just parsed it using python.","commit_id":"6af612110da4f8bd588b2ae1597f21491c3cd96c"},{"author":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"change_message_id":"49a61617679722a5cd0e31729681d8b5b372f540","unresolved":true,"context_lines":[{"line_number":64,"context_line":"                raise exceptions.UnsupportedVersion(msg)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def __str__(self):"},{"line_number":67,"context_line":"        \"\"\"Debug/Logging representation of object.\"\"\""},{"line_number":68,"context_line":"        if self.is_latest():"},{"line_number":69,"context_line":"            return \"Latest API Version Major: %s\" % self.ver_major"},{"line_number":70,"context_line":"        return (\"API Version Major: %s, Minor: %s\""},{"line_number":71,"context_line":"                % (self.ver_major, self.ver_minor))"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def __repr__(self):"},{"line_number":74,"context_line":"        if self:"}],"source_content_type":"text/x-python","patch_set":13,"id":"96386228_57cff437","line":71,"range":{"start_line":67,"start_character":8,"end_line":71,"end_character":51},"updated":"2022-10-27 17:50:15.000000000","message":"This might be better if we return the version string e.g. \"v1.0\" instead of that long debug string.  The message would be better suited as the string passed to a LOG.debug call.","commit_id":"6af612110da4f8bd588b2ae1597f21491c3cd96c"},{"author":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"change_message_id":"49a61617679722a5cd0e31729681d8b5b372f540","unresolved":true,"context_lines":[{"line_number":71,"context_line":"                % (self.ver_major, self.ver_minor))"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def __repr__(self):"},{"line_number":74,"context_line":"        if self:"},{"line_number":75,"context_line":"            return \"\u003cAPIVersion: %s\u003e\" % self.get_string()"},{"line_number":76,"context_line":"        return \"\u003cAPIVersion: null\u003e\""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def __bool__(self):"},{"line_number":79,"context_line":"        return self.ver_major !\u003d 0 or self.ver_minor !\u003d 0"}],"source_content_type":"text/x-python","patch_set":13,"id":"8b33e156_b8921b5f","line":76,"range":{"start_line":74,"start_character":8,"end_line":76,"end_character":35},"updated":"2022-10-27 17:50:15.000000000","message":"This is not a good repr implementation as it will not pass the `eval(repr())` test.","commit_id":"6af612110da4f8bd588b2ae1597f21491c3cd96c"},{"author":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"change_message_id":"49a61617679722a5cd0e31729681d8b5b372f540","unresolved":true,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    __nonzero__ \u003d __bool__"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    def is_latest(self):"},{"line_number":84,"context_line":"        return self.ver_minor \u003d\u003d float(\"inf\")"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def __lt__(self, other):"}],"source_content_type":"text/x-python","patch_set":13,"id":"2180b28f_a323f96e","line":83,"range":{"start_line":83,"start_character":8,"end_line":83,"end_character":17},"updated":"2022-10-27 17:50:15.000000000","message":"this could be a @property","commit_id":"6af612110da4f8bd588b2ae1597f21491c3cd96c"},{"author":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"change_message_id":"49a61617679722a5cd0e31729681d8b5b372f540","unresolved":true,"context_lines":[{"line_number":150,"context_line":"            return self \u003c\u003d max_version"},{"line_number":151,"context_line":"        return min_version \u003c\u003d self \u003c\u003d max_version"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    def get_string(self):"},{"line_number":154,"context_line":"        \"\"\"Converts object to string representation"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"        which if used to create an APIVersion object results in the"},{"line_number":157,"context_line":"        same version."},{"line_number":158,"context_line":"        \"\"\""},{"line_number":159,"context_line":"        if not self:"},{"line_number":160,"context_line":"            raise ValueError(\"Null APIVersion cannot be converted to string.\")"},{"line_number":161,"context_line":"        elif self.is_latest():"},{"line_number":162,"context_line":"            return \"%s.%s\" % (self.ver_major, \"latest\")"},{"line_number":163,"context_line":"        return \"%s.%s\" % (self.ver_major, self.ver_minor)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    def get_major_version(self):"},{"line_number":166,"context_line":"        return \"%s\" % self.ver_major"}],"source_content_type":"text/x-python","patch_set":13,"id":"07bb62ed_64170c99","line":163,"range":{"start_line":153,"start_character":4,"end_line":163,"end_character":57},"updated":"2022-10-27 17:50:15.000000000","message":"We don\u0027t need this.  We should return this in __str__ instead of this Java-y getter method.","commit_id":"6af612110da4f8bd588b2ae1597f21491c3cd96c"},{"author":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"change_message_id":"49a61617679722a5cd0e31729681d8b5b372f540","unresolved":true,"context_lines":[{"line_number":162,"context_line":"            return \"%s.%s\" % (self.ver_major, \"latest\")"},{"line_number":163,"context_line":"        return \"%s.%s\" % (self.ver_major, self.ver_minor)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    def get_major_version(self):"},{"line_number":166,"context_line":"        return \"%s\" % self.ver_major"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"class VersionedMethod(object):"}],"source_content_type":"text/x-python","patch_set":13,"id":"a952f655_4c89ad01","line":166,"range":{"start_line":165,"start_character":3,"end_line":166,"end_character":36},"updated":"2022-10-27 17:50:15.000000000","message":"We don\u0027t need this.  self.ver_major is not private.","commit_id":"6af612110da4f8bd588b2ae1597f21491c3cd96c"},{"author":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"change_message_id":"49a61617679722a5cd0e31729681d8b5b372f540","unresolved":true,"context_lines":[{"line_number":188,"context_line":"                % (self.name, self.start_version, self.end_version))"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    def __repr__(self):"},{"line_number":191,"context_line":"        return \"\u003cVersionedMethod %s\u003e\" % self.name"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"def discover_version(client, requested_version):"}],"source_content_type":"text/x-python","patch_set":13,"id":"665a7e09_c17f4170","line":191,"range":{"start_line":191,"start_character":8,"end_line":191,"end_character":49},"updated":"2022-10-27 17:50:15.000000000","message":"Same issue as above, this does not pass `eval(repr())` test.","commit_id":"6af612110da4f8bd588b2ae1597f21491c3cd96c"},{"author":{"_account_id":34120,"name":"Andre Aranha","display_name":"afariasa","email":"afariasa@redhat.com","username":"afariasa"},"change_message_id":"d28206e4b80d9dab61c8ed3e7559ff65bd0dbe8c","unresolved":true,"context_lines":[{"line_number":242,"context_line":"    downgrade to \u0027server_end_version\u0027. Otherwise an UnsupportedVersion"},{"line_number":243,"context_line":"    exception is thrown."},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"    :param requested_version: requestedversion represented by APIVersion obj"},{"line_number":246,"context_line":"    :param server_start_version: APIVersion object representing server min"},{"line_number":247,"context_line":"    :param server_end_version: APIVersion object representing server max"},{"line_number":248,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":13,"id":"ab2e5a9d_472baf57","line":245,"range":{"start_line":245,"start_character":30,"end_line":245,"end_character":46},"updated":"2022-10-31 13:03:21.000000000","message":"Not important, but if this is resubmitted:\ns/requestedversion/requested version/","commit_id":"6af612110da4f8bd588b2ae1597f21491c3cd96c"}],"barbicanclient/barbican.py":[{"author":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"change_message_id":"94da75d42aadde2d3eefc0e7a2df9b11ee0c2b1a","unresolved":true,"context_lines":[{"line_number":255,"context_line":"                      if getattr(args, key, None))"},{"line_number":256,"context_line":"        # TODO(alee): Just get the major version and prepend a \u0027v\u0027"},{"line_number":257,"context_line":"        if \u0027barbican_api_version\u0027 in kwargs:"},{"line_number":258,"context_line":"            kwargs[\u0027version\u0027] \u003d \u0027v1\u0027"},{"line_number":259,"context_line":"            kwargs.pop(\u0027barbican_api_version\u0027)"},{"line_number":260,"context_line":"        return kwargs"},{"line_number":261,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"6cb84fa9_16d6d759","line":258,"updated":"2022-09-02 08:43:18.000000000","message":"This shouldn\u0027t be hardcoded, maybe what we need to do is to read the major version from the command line argument and either put it here as is, or validate it (i.e. version 1 is the only supported version at this point)","commit_id":"eac5baaf7ac21ff9d8d40a8e7e2a6d259a2c5fd2"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"320b7c5120fce390b4f51c7a95b06702b1918c47","unresolved":true,"context_lines":[{"line_number":256,"context_line":"        # TODO(alee): Just get the major version and prepend a \u0027v\u0027"},{"line_number":257,"context_line":"        if \u0027barbican_api_version\u0027 in kwargs:"},{"line_number":258,"context_line":"            kwargs[\u0027version\u0027] \u003d \u0027v1\u0027"},{"line_number":259,"context_line":"            kwargs.pop(\u0027barbican_api_version\u0027)"},{"line_number":260,"context_line":"        return kwargs"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"    def build_option_parser(self, description, version, argparse_kwargs\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"56b6f382_f12c66e6","line":259,"updated":"2022-09-02 08:43:48.000000000","message":"would be really nice to get rid of this hack","commit_id":"eac5baaf7ac21ff9d8d40a8e7e2a6d259a2c5fd2"}],"barbicanclient/client.py":[{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"7a40349005a6e15d6c89907a73a2aebf62ed8c4d","unresolved":true,"context_lines":[{"line_number":65,"context_line":"        if self.api_version is not None:"},{"line_number":66,"context_line":"            self._default_headers[\u0027OpenStack-API-Version\u0027] \u003d ("},{"line_number":67,"context_line":"                \"key-manager  \" + self.api_version.get_string())"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def request(self, *args, **kwargs):"},{"line_number":70,"context_line":"        headers \u003d kwargs.setdefault(\u0027headers\u0027, {})"},{"line_number":71,"context_line":"        headers.update(self._default_headers)"}],"source_content_type":"text/x-python","patch_set":3,"id":"851ca059_260a7a70","line":68,"updated":"2022-09-02 08:42:48.000000000","message":"Maybe use the method update_headers() here instead","commit_id":"eac5baaf7ac21ff9d8d40a8e7e2a6d259a2c5fd2"},{"author":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"change_message_id":"7cc722f4160fd6e80c092226cedfe88f022bccbc","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        if self.api_version is not None:"},{"line_number":66,"context_line":"            self._default_headers[\u0027OpenStack-API-Version\u0027] \u003d ("},{"line_number":67,"context_line":"                \"key-manager  \" + self.api_version.get_string())"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def request(self, *args, **kwargs):"},{"line_number":70,"context_line":"        headers \u003d kwargs.setdefault(\u0027headers\u0027, {})"},{"line_number":71,"context_line":"        headers.update(self._default_headers)"}],"source_content_type":"text/x-python","patch_set":3,"id":"f47052e0_a834eb0f","line":68,"in_reply_to":"53301a7d_17d3a59a","updated":"2022-12-23 15:42:14.000000000","message":"Done","commit_id":"eac5baaf7ac21ff9d8d40a8e7e2a6d259a2c5fd2"},{"author":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"change_message_id":"f9d5b2eb03c7bac2459437215600a928e5b3ab7c","unresolved":true,"context_lines":[{"line_number":65,"context_line":"        if self.api_version is not None:"},{"line_number":66,"context_line":"            self._default_headers[\u0027OpenStack-API-Version\u0027] \u003d ("},{"line_number":67,"context_line":"                \"key-manager  \" + self.api_version.get_string())"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def request(self, *args, **kwargs):"},{"line_number":70,"context_line":"        headers \u003d kwargs.setdefault(\u0027headers\u0027, {})"},{"line_number":71,"context_line":"        headers.update(self._default_headers)"}],"source_content_type":"text/x-python","patch_set":3,"id":"53301a7d_17d3a59a","line":68,"in_reply_to":"851ca059_260a7a70","updated":"2022-10-27 19:43:42.000000000","message":"this is not necessary.  the microversions header is handled by `adapter.Adapter`","commit_id":"eac5baaf7ac21ff9d8d40a8e7e2a6d259a2c5fd2"},{"author":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"change_message_id":"e8a5d37281d71ce567ef24f5d8c31ad0a2d33f0c","unresolved":true,"context_lines":[{"line_number":47,"context_line":"        # remove /v1 because this will not work for version client"},{"line_number":48,"context_line":"        endpoint \u003d re.sub(\u0027/v1/?$\u0027, \u0027\u0027, endpoint)"},{"line_number":49,"context_line":"        add_version_to_override \u003d kwargs.pop(\u0027add_version_to_override\u0027, True)"},{"line_number":50,"context_line":"        base_api_version \u003d api_versions.APIVersion(\u00271.0\u0027)"},{"line_number":51,"context_line":"        self.api_version \u003d kwargs.pop(\u0027barbican_api_version\u0027,"},{"line_number":52,"context_line":"                                      base_api_version)"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"af1ee82d_3d35598a","line":50,"updated":"2022-09-08 08:58:47.000000000","message":"We decided we should put api_versions.MAX_VERSION here by default.","commit_id":"9c3aa669fadb7a21f6bb456c3a60301d4452e364"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"7f237f062ced9eed333b29d10d531958017a5b20","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        # remove /v1 because this will not work for version client"},{"line_number":48,"context_line":"        endpoint \u003d re.sub(\u0027/v1/?$\u0027, \u0027\u0027, endpoint)"},{"line_number":49,"context_line":"        add_version_to_override \u003d kwargs.pop(\u0027add_version_to_override\u0027, True)"},{"line_number":50,"context_line":"        base_api_version \u003d api_versions.APIVersion(\u00271.0\u0027)"},{"line_number":51,"context_line":"        self.api_version \u003d kwargs.pop(\u0027barbican_api_version\u0027,"},{"line_number":52,"context_line":"                                      base_api_version)"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"e5859d57_208edd0c","line":50,"in_reply_to":"af1ee82d_3d35598a","updated":"2022-11-24 11:12:07.000000000","message":"Done","commit_id":"9c3aa669fadb7a21f6bb456c3a60301d4452e364"},{"author":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"change_message_id":"49a61617679722a5cd0e31729681d8b5b372f540","unresolved":true,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        # remove /v1 because this will not work for version client"},{"line_number":48,"context_line":"        if endpoint:"},{"line_number":49,"context_line":"            endpoint \u003d re.sub(\"/v1/?$\", \"\", endpoint)"},{"line_number":50,"context_line":"        add_version_to_override \u003d kwargs.pop(\u0027add_version_to_override\u0027, True)"},{"line_number":51,"context_line":"        base_api_version \u003d api_versions.APIVersion(api_versions.MIN_VERSION)"},{"line_number":52,"context_line":"        self.api_version \u003d kwargs.pop(\u0027barbican_api_version\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"d7ce5b30_5de5407a","line":49,"range":{"start_line":49,"start_character":30,"end_line":49,"end_character":37},"updated":"2022-10-27 17:50:15.000000000","message":"consider using python instead of regular expressions.  This would read better using builtins like `startswith()`","commit_id":"6af612110da4f8bd588b2ae1597f21491c3cd96c"},{"author":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"change_message_id":"e01b6cacbf0487d3fcd73fac34ef368cf06921f5","unresolved":true,"context_lines":[{"line_number":49,"context_line":"            endpoint \u003d re.sub(\"/v1/?$\", \"\", endpoint)"},{"line_number":50,"context_line":"        add_version_to_override \u003d kwargs.pop(\u0027add_version_to_override\u0027, True)"},{"line_number":51,"context_line":"        base_api_version \u003d api_versions.APIVersion(api_versions.MIN_VERSION)"},{"line_number":52,"context_line":"        self.api_version \u003d kwargs.pop(\u0027barbican_api_version\u0027,"},{"line_number":53,"context_line":"                                      base_api_version)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        super(_HTTPClient, self).__init__(session, **kwargs)"}],"source_content_type":"text/x-python","patch_set":13,"id":"7b3ae9cd_0249a14e","line":52,"range":{"start_line":52,"start_character":39,"end_line":52,"end_character":59},"updated":"2022-10-27 19:42:21.000000000","message":"instead of introducing a new parameter, we should use the microversion prpoerties provided by `adapter.Adapter` https://opendev.org/openstack/keystoneauth/src/commit/aa9c5d230f48c0ca4a4fb5dde6c92a07aab287e0/keystoneauth1/adapter.py#L75-L87","commit_id":"6af612110da4f8bd588b2ae1597f21491c3cd96c"},{"author":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"change_message_id":"49a61617679722a5cd0e31729681d8b5b372f540","unresolved":true,"context_lines":[{"line_number":55,"context_line":"        super(_HTTPClient, self).__init__(session, **kwargs)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        if endpoint:"},{"line_number":58,"context_line":"            if add_version_to_override:"},{"line_number":59,"context_line":"                self.endpoint_override \u003d \u0027{0}/{1}\u0027.format("},{"line_number":60,"context_line":"                    endpoint, self.version)"},{"line_number":61,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":13,"id":"37754fec_ec3104a1","line":58,"updated":"2022-10-27 17:50:15.000000000","message":"If this only applies to `VersionClient`, then we should override __init__ there instead of passing this value to the base class.","commit_id":"6af612110da4f8bd588b2ae1597f21491c3cd96c"},{"author":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"change_message_id":"49a61617679722a5cd0e31729681d8b5b372f540","unresolved":true,"context_lines":[{"line_number":200,"context_line":"        raise exceptions.UnsupportedVersion(msg)"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"class VersionClient(object):"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    def __init__(self, session\u003dNone, *args, **kwargs):"},{"line_number":206,"context_line":"        \"\"\"Version client object used to interact with barbican service."}],"source_content_type":"text/x-python","patch_set":13,"id":"92661398_71c1215f","line":203,"range":{"start_line":203,"start_character":6,"end_line":203,"end_character":27},"updated":"2022-10-27 17:50:15.000000000","message":"Why is this a separate client?  Is the expectation that projecs using python-barbicanclient need to manage an instance of this class in addition to the Client to actually do work with Barbican?  I think it may be better to keep this inside the main Client class and just take a parameter for the version.","commit_id":"6af612110da4f8bd588b2ae1597f21491c3cd96c"},{"author":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"change_message_id":"a9d32b07e57bd0c56e03e27f878d4cff694782dc","unresolved":true,"context_lines":[{"line_number":120,"context_line":"        return message"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"def Client(session\u003dNone, *args, **kwargs):"},{"line_number":124,"context_line":"    \"\"\"Barbican client used to interact with barbican service."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    :param session: An instance of keystoneauth1.session.Session that"}],"source_content_type":"text/x-python","patch_set":15,"id":"4f82f88f_a8c8dead","line":123,"range":{"start_line":123,"start_character":11,"end_line":123,"end_character":40},"updated":"2022-11-04 13:26:33.000000000","message":"Per xek, revert the signature here.","commit_id":"bc87a33dde1d7efffceda8a2b5557898e584afbe"},{"author":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"change_message_id":"d45d7dac2d3c6a6eb34a3ecb10419473c54fc391","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        return message"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"def Client(session\u003dNone, *args, **kwargs):"},{"line_number":124,"context_line":"    \"\"\"Barbican client used to interact with barbican service."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    :param session: An instance of keystoneauth1.session.Session that"}],"source_content_type":"text/x-python","patch_set":15,"id":"683fe985_fef0b797","line":123,"range":{"start_line":123,"start_character":11,"end_line":123,"end_character":40},"in_reply_to":"4f82f88f_a8c8dead","updated":"2022-12-23 15:39:26.000000000","message":"Done","commit_id":"bc87a33dde1d7efffceda8a2b5557898e584afbe"},{"author":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"change_message_id":"8fd3d5e063d30d9b714a1737a57fd49dab125588","unresolved":true,"context_lines":[{"line_number":122,"context_line":"def Client(version\u003dNone, session\u003dNone, *args, **kwargs):"},{"line_number":123,"context_line":"    \"\"\"Barbican client used to interact with barbican service."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    :param version: The API version to use."},{"line_number":126,"context_line":"    :param session: An instance of keystoneauth1.session.Session that"},{"line_number":127,"context_line":"        can be either authenticated, or not authenticated.  When using"},{"line_number":128,"context_line":"        a non-authenticated Session, you must provide some additional"}],"source_content_type":"text/x-python","patch_set":20,"id":"ccd9b78e_fae94513","side":"PARENT","line":125,"updated":"2022-12-02 09:39:41.000000000","message":"Why are we removing the version from doc? It looks like it\u0027s still being used to construct the endpoint URL and set in tests. If it\u0027s deprecated, we should leave this line, prefixing it with \"deprecated\" and maybe explaining why and what to use instead.","commit_id":"8a509d0670b16c5e35d4deb05f1ab6d0b2a63816"},{"author":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"change_message_id":"96b8540ed96763ad792c18dbada62e6ff47123aa","unresolved":true,"context_lines":[{"line_number":175,"context_line":"                raise ValueError(\u0027Project ID must be provided when not using \u0027"},{"line_number":176,"context_line":"                                 \u0027auth in the Keystone Session\u0027)"},{"line_number":177,"context_line":"        else:"},{"line_number":178,"context_line":"            session.auth \u003d kwargs[\u0027auth\u0027]"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    kwargs[\u0027version\u0027] \u003d version or _DEFAULT_API_VERSION"},{"line_number":181,"context_line":"    kwargs.setdefault(\u0027service_type\u0027, _DEFAULT_SERVICE_TYPE)"}],"source_content_type":"text/x-python","patch_set":20,"id":"e5cb0e03_4e7a6ed1","line":178,"range":{"start_line":178,"start_character":12,"end_line":178,"end_character":41},"updated":"2022-11-10 15:23:32.000000000","message":"I\u0027m not 100% sure this is the right thing to do here.  Since we pass-through the args from here all the way down to the _HTTPClient, then \"auth\" is used by the client as an override instead of `session.auth`.\n\nThis is going to set the given auth as the session.auth if session.auth is not given (either the user passed non-auth session or no session at all).\n\nWe need the session to have auth so that we can check the microversion when using discovery (since discovery needs an auth plugin) - mainly because the previous logic was fine with non-auth sessions, but some tests are only passing `auth` instead of session which doesn\u0027t quite work with our microversion validation logic.\n\nMaybe it\u0027s ok, since the _HTTPClient will then override `session.auth` with the \"auth\" arg on every call, but it does seem a bit inefficient.","commit_id":"f15a4690d0656c1dbec9ab025deab1a540ec08f9"},{"author":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"change_message_id":"8fd3d5e063d30d9b714a1737a57fd49dab125588","unresolved":true,"context_lines":[{"line_number":175,"context_line":"                raise ValueError(\u0027Project ID must be provided when not using \u0027"},{"line_number":176,"context_line":"                                 \u0027auth in the Keystone Session\u0027)"},{"line_number":177,"context_line":"        else:"},{"line_number":178,"context_line":"            session.auth \u003d kwargs[\u0027auth\u0027]"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    kwargs[\u0027version\u0027] \u003d version or _DEFAULT_API_VERSION"},{"line_number":181,"context_line":"    kwargs.setdefault(\u0027service_type\u0027, _DEFAULT_SERVICE_TYPE)"}],"source_content_type":"text/x-python","patch_set":20,"id":"36fc81f2_df10d014","line":178,"range":{"start_line":178,"start_character":12,"end_line":178,"end_character":41},"in_reply_to":"e5cb0e03_4e7a6ed1","updated":"2022-12-02 09:39:41.000000000","message":"Yeah, it\u0027s not the best practice to do a drive by modification like that.\nBut if it\u0027s only used for tests, I\u0027m ok with it. It needs a comment though.\n\n[It\u0027s not documented, so I assume it\u0027s only for testing.]","commit_id":"f15a4690d0656c1dbec9ab025deab1a540ec08f9"}],"barbicanclient/tests/test_barbican.py":[{"author":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"change_message_id":"8fd3d5e063d30d9b714a1737a57fd49dab125588","unresolved":true,"context_lines":[{"line_number":228,"context_line":"                          argv)"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def test_should_prevent_mutual_exclusive_file_opt(self):"},{"line_number":231,"context_line":"        # TODO(dmendiza) Figure out how to test this correctly"},{"line_number":232,"context_line":"        # args \u003d ("},{"line_number":233,"context_line":"        #     \u0027--no-auth --endpoint {0} --os-tenant-id {1} secret get \u0027"},{"line_number":234,"context_line":"        #     \u0027--file foo --payload secret-id\u0027.format("}],"source_content_type":"text/x-python","patch_set":20,"id":"8fbf4efe_bb24d21e","line":231,"updated":"2022-12-02 09:39:41.000000000","message":"Are we dropping this test? Why?","commit_id":"f15a4690d0656c1dbec9ab025deab1a540ec08f9"},{"author":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"change_message_id":"7cc722f4160fd6e80c092226cedfe88f022bccbc","unresolved":false,"context_lines":[{"line_number":228,"context_line":"                          argv)"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def test_should_prevent_mutual_exclusive_file_opt(self):"},{"line_number":231,"context_line":"        # TODO(dmendiza) Figure out how to test this correctly"},{"line_number":232,"context_line":"        # args \u003d ("},{"line_number":233,"context_line":"        #     \u0027--no-auth --endpoint {0} --os-tenant-id {1} secret get \u0027"},{"line_number":234,"context_line":"        #     \u0027--file foo --payload secret-id\u0027.format("}],"source_content_type":"text/x-python","patch_set":20,"id":"51b981c6_3e8f19e9","line":231,"in_reply_to":"8fbf4efe_bb24d21e","updated":"2022-12-23 15:42:14.000000000","message":"I fixed the test.","commit_id":"f15a4690d0656c1dbec9ab025deab1a540ec08f9"},{"author":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"change_message_id":"8fd3d5e063d30d9b714a1737a57fd49dab125588","unresolved":true,"context_lines":[{"line_number":257,"context_line":"        self.assertFalse(httpclient.session.verify)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    def test_cafile_certfile_keyfile_kwargs_set_correctly(self):"},{"line_number":260,"context_line":"        # TODO(dmendiza) Fix this test -  Do we really need it though?"},{"line_number":261,"context_line":"        pass"},{"line_number":262,"context_line":"        # auth_args \u003d (\u0027no_auth \u0027"},{"line_number":263,"context_line":"        #              \u0027--os-auth-url https://localhost:5000/v3 \u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"2576933a_8b005dfb","line":260,"updated":"2022-12-02 09:39:41.000000000","message":"Are we dropping this test? Why?","commit_id":"f15a4690d0656c1dbec9ab025deab1a540ec08f9"},{"author":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"change_message_id":"d45d7dac2d3c6a6eb34a3ecb10419473c54fc391","unresolved":false,"context_lines":[{"line_number":257,"context_line":"        self.assertFalse(httpclient.session.verify)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    def test_cafile_certfile_keyfile_kwargs_set_correctly(self):"},{"line_number":260,"context_line":"        # TODO(dmendiza) Fix this test -  Do we really need it though?"},{"line_number":261,"context_line":"        pass"},{"line_number":262,"context_line":"        # auth_args \u003d (\u0027no_auth \u0027"},{"line_number":263,"context_line":"        #              \u0027--os-auth-url https://localhost:5000/v3 \u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"df8c126d_35afc455","line":260,"in_reply_to":"2576933a_8b005dfb","updated":"2022-12-23 15:39:26.000000000","message":"I deleted this test, it looks like we would need to mock keystoneauth responses to fix it, which wouldn\u0027t meet a definition of a unit test.","commit_id":"f15a4690d0656c1dbec9ab025deab1a540ec08f9"}],"barbicanclient/tests/test_client.py":[{"author":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"change_message_id":"8fd3d5e063d30d9b714a1737a57fd49dab125588","unresolved":true,"context_lines":[{"line_number":62,"context_line":"                         c.client.endpoint_override)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def test_default_headers_are_empty(self):"},{"line_number":65,"context_line":"        # TODO(dmendiza): _default_headers is only emplty when using an"},{"line_number":66,"context_line":"        # authenticated session, so this is probably better in a functional"},{"line_number":67,"context_line":"        # test since we need a working keystone"},{"line_number":68,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":20,"id":"a4444d26_42838cce","line":65,"updated":"2022-12-02 09:39:41.000000000","message":"If we\u0027re removing the test, the commented code should also be removed. We can add this comment to the commit message.","commit_id":"f15a4690d0656c1dbec9ab025deab1a540ec08f9"},{"author":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"change_message_id":"d45d7dac2d3c6a6eb34a3ecb10419473c54fc391","unresolved":true,"context_lines":[{"line_number":62,"context_line":"                         c.client.endpoint_override)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def test_default_headers_are_empty(self):"},{"line_number":65,"context_line":"        # TODO(dmendiza): _default_headers is only emplty when using an"},{"line_number":66,"context_line":"        # authenticated session, so this is probably better in a functional"},{"line_number":67,"context_line":"        # test since we need a working keystone"},{"line_number":68,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":20,"id":"cb5385e3_59c8f7d4","line":65,"in_reply_to":"a4444d26_42838cce","updated":"2022-12-23 15:39:26.000000000","message":"I reintroduced this test","commit_id":"f15a4690d0656c1dbec9ab025deab1a540ec08f9"}],"barbicanclient/v1/acls.py":[{"author":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"change_message_id":"49a61617679722a5cd0e31729681d8b5b372f540","unresolved":true,"context_lines":[{"line_number":206,"context_line":"                                   created\u003dcreated, updated\u003dupdated)"},{"line_number":207,"context_line":"            self._operation_acls.append(acl)"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    @property"},{"line_number":210,"context_line":"    def api_version(self):"},{"line_number":211,"context_line":"        return self._api.api_version"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"    @property"},{"line_number":214,"context_line":"    def entity_ref(self):"}],"source_content_type":"text/x-python","patch_set":13,"id":"ef654050_e4a256f4","line":211,"range":{"start_line":209,"start_character":4,"end_line":211,"end_character":36},"updated":"2022-10-27 17:50:15.000000000","message":"Maybe we should create a BaseEntity class instead of copying this same code across all entities.","commit_id":"6af612110da4f8bd588b2ae1597f21491c3cd96c"},{"author":{"_account_id":34120,"name":"Andre Aranha","display_name":"afariasa","email":"afariasa@redhat.com","username":"afariasa"},"change_message_id":"d28206e4b80d9dab61c8ed3e7559ff65bd0dbe8c","unresolved":true,"context_lines":[{"line_number":206,"context_line":"                                   created\u003dcreated, updated\u003dupdated)"},{"line_number":207,"context_line":"            self._operation_acls.append(acl)"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    @property"},{"line_number":210,"context_line":"    def api_version(self):"},{"line_number":211,"context_line":"        return self._api.api_version"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"    @property"},{"line_number":214,"context_line":"    def entity_ref(self):"}],"source_content_type":"text/x-python","patch_set":13,"id":"74347358_bc66e777","line":211,"range":{"start_line":209,"start_character":4,"end_line":211,"end_character":36},"in_reply_to":"ef654050_e4a256f4","updated":"2022-10-31 13:03:21.000000000","message":"+1","commit_id":"6af612110da4f8bd588b2ae1597f21491c3cd96c"}],"barbicanclient/v1/client.py":[{"author":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"change_message_id":"a9d32b07e57bd0c56e03e27f878d4cff694782dc","unresolved":true,"context_lines":[{"line_number":53,"context_line":"        self.cas \u003d cas.CAManager(self.client)"},{"line_number":54,"context_line":"        self.acls \u003d acls.ACLManager(self.client)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def _validate_microversion(self, microversion):"},{"line_number":57,"context_line":"        normalized \u003d discover.normalize_version_number(microversion)"},{"line_number":58,"context_line":"        if normalized not in _SUPPORTED_MICROVERSIONS:"},{"line_number":59,"context_line":"            raise ValueError(\"Invalid microversion {}\".format(microversion))"}],"source_content_type":"text/x-python","patch_set":15,"id":"b29e11c8_f6243181","line":56,"range":{"start_line":56,"start_character":8,"end_line":56,"end_character":30},"updated":"2022-11-04 13:26:33.000000000","message":"Per Andre, make this method return a bool.","commit_id":"bc87a33dde1d7efffceda8a2b5557898e584afbe"},{"author":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"change_message_id":"d45d7dac2d3c6a6eb34a3ecb10419473c54fc391","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        self.cas \u003d cas.CAManager(self.client)"},{"line_number":54,"context_line":"        self.acls \u003d acls.ACLManager(self.client)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def _validate_microversion(self, microversion):"},{"line_number":57,"context_line":"        normalized \u003d discover.normalize_version_number(microversion)"},{"line_number":58,"context_line":"        if normalized not in _SUPPORTED_MICROVERSIONS:"},{"line_number":59,"context_line":"            raise ValueError(\"Invalid microversion {}\".format(microversion))"}],"source_content_type":"text/x-python","patch_set":15,"id":"a9344938_895e4b27","line":56,"range":{"start_line":56,"start_character":8,"end_line":56,"end_character":30},"in_reply_to":"b29e11c8_f6243181","updated":"2022-12-23 15:39:26.000000000","message":"Done","commit_id":"bc87a33dde1d7efffceda8a2b5557898e584afbe"}],"barbicanclient/versions.py":[{"author":{"_account_id":34120,"name":"Andre Aranha","display_name":"afariasa","email":"afariasa@redhat.com","username":"afariasa"},"change_message_id":"d28206e4b80d9dab61c8ed3e7559ff65bd0dbe8c","unresolved":true,"context_lines":[{"line_number":31,"context_line":"        LOG.debug(\u0027Listing versions supported by the server\u0027)"},{"line_number":32,"context_line":"        response \u003d self._api.get(\u0027/\u0027)"},{"line_number":33,"context_line":"        # do different responses depending on output"},{"line_number":34,"context_line":"        versions \u003d response[\u0027versions\u0027]"},{"line_number":35,"context_line":"        if \u0027values\u0027 in versions:"},{"line_number":36,"context_line":"            # pre-microversions, return \"values\""},{"line_number":37,"context_line":"            return versions[\u0027values\u0027]"}],"source_content_type":"text/x-python","patch_set":13,"id":"3bfd2d1e_4fabb5c2","line":34,"updated":"2022-10-31 13:03:21.000000000","message":"Should we add tests for this as well?","commit_id":"6af612110da4f8bd588b2ae1597f21491c3cd96c"},{"author":{"_account_id":34120,"name":"Andre Aranha","display_name":"afariasa","email":"afariasa@redhat.com","username":"afariasa"},"change_message_id":"d28206e4b80d9dab61c8ed3e7559ff65bd0dbe8c","unresolved":true,"context_lines":[{"line_number":31,"context_line":"        LOG.debug(\u0027Listing versions supported by the server\u0027)"},{"line_number":32,"context_line":"        response \u003d self._api.get(\u0027/\u0027)"},{"line_number":33,"context_line":"        # do different responses depending on output"},{"line_number":34,"context_line":"        versions \u003d response[\u0027versions\u0027]"},{"line_number":35,"context_line":"        if \u0027values\u0027 in versions:"},{"line_number":36,"context_line":"            # pre-microversions, return \"values\""},{"line_number":37,"context_line":"            return versions[\u0027values\u0027]"}],"source_content_type":"text/x-python","patch_set":13,"id":"ff7fb529_55f45c80","line":34,"updated":"2022-10-31 13:03:21.000000000","message":"Suggestion:\nWe could do like this:\nreturn versions.get(\u0027values\u0027, versions)","commit_id":"6af612110da4f8bd588b2ae1597f21491c3cd96c"},{"author":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"change_message_id":"34057e28acd7486ac7eebd417b00a586ab43a4fb","unresolved":true,"context_lines":[{"line_number":31,"context_line":"        LOG.debug(\u0027Listing versions supported by the server\u0027)"},{"line_number":32,"context_line":"        response \u003d self._api.get(\u0027/\u0027)"},{"line_number":33,"context_line":"        # do different responses depending on output"},{"line_number":34,"context_line":"        versions \u003d response[\u0027versions\u0027]"},{"line_number":35,"context_line":"        if \u0027values\u0027 in versions:"},{"line_number":36,"context_line":"            # pre-microversions, return \"values\""},{"line_number":37,"context_line":"            return versions[\u0027values\u0027]"}],"source_content_type":"text/x-python","patch_set":13,"id":"9f452e71_63cd1ef0","line":34,"in_reply_to":"ff7fb529_55f45c80","updated":"2022-10-31 15:49:21.000000000","message":"This whole class is not necessary.  python-barbicanclient already depends on keystoneauth, and keystoneauth has already implemented a method to retrieve version information from an endpoint: \n\nhttps://opendev.org/openstack/keystoneauth/src/commit/aa9c5d230f48c0ca4a4fb5dde6c92a07aab287e0/keystoneauth1/discover.py#L61\n\nIn general, we should aim to reuse code that we already depend on instead of writing new code that duplicates existing functionality.","commit_id":"6af612110da4f8bd588b2ae1597f21491c3cd96c"}],"functionaltests/client/test_client_connectivity.py":[{"author":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"change_message_id":"8fd3d5e063d30d9b714a1737a57fd49dab125588","unresolved":true,"context_lines":[{"line_number":70,"context_line":"        self.assertRaises(exceptions.HTTPClientError, client.orders.list)"},{"line_number":71,"context_line":"        self.assertRaises(exceptions.HTTPClientError, client.secrets.list)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def assert_client_cannot_get_endpoint(self, client):"},{"line_number":74,"context_line":"        self.assertRaises(ks_exceptions.EndpointNotFound,"},{"line_number":75,"context_line":"                          client.containers.list)"},{"line_number":76,"context_line":"        self.assertRaises(ks_exceptions.EndpointNotFound,"}],"source_content_type":"text/x-python","patch_set":20,"id":"3f818c85_e6d0deac","line":73,"updated":"2022-12-02 09:39:41.000000000","message":"This method should be removed as it\u0027s no longer used","commit_id":"f15a4690d0656c1dbec9ab025deab1a540ec08f9"},{"author":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"change_message_id":"d45d7dac2d3c6a6eb34a3ecb10419473c54fc391","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        self.assertRaises(exceptions.HTTPClientError, client.orders.list)"},{"line_number":71,"context_line":"        self.assertRaises(exceptions.HTTPClientError, client.secrets.list)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def assert_client_cannot_get_endpoint(self, client):"},{"line_number":74,"context_line":"        self.assertRaises(ks_exceptions.EndpointNotFound,"},{"line_number":75,"context_line":"                          client.containers.list)"},{"line_number":76,"context_line":"        self.assertRaises(ks_exceptions.EndpointNotFound,"}],"source_content_type":"text/x-python","patch_set":20,"id":"1bc06c2e_9501dc01","line":73,"in_reply_to":"3f818c85_e6d0deac","updated":"2022-12-23 15:39:26.000000000","message":"Done","commit_id":"f15a4690d0656c1dbec9ab025deab1a540ec08f9"}]}
