)]}'
{"openstackclient/api/object_store_v1.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f687f5b787e3e3d22192abbd2cb8918eb9bcb885","unresolved":true,"context_lines":[{"line_number":21,"context_line":"import urllib.parse"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from osc_lib import utils"},{"line_number":24,"context_line":"import simplejson as json"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from openstackclient.api import api"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"8189fa0a_f3d4a235","line":24,"updated":"2021-01-22 16:54:08.000000000","message":"Not using stdlib json? I suppose there\u0027s precedent in openstackclient/api/api.py ... but then it cuts the other way under network/ and identity/. When would we want one vs. the other?\n\nOh... we\u0027re just using it to be specific with our exception-catching... because requests made some decision a while back to use simplejson if available... would it be better to import like\n\n from requests.compat.json import JSONDecodeError\n\n?","commit_id":"966b14ba7d4a04967423525be1f0b6697937bcb1"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f687f5b787e3e3d22192abbd2cb8918eb9bcb885","unresolved":true,"context_lines":[{"line_number":45,"context_line":"        \"\"\""},{"line_number":46,"context_line":"        # NOTE(iokiwi): Strip off /v1/AUTH from end of"},{"line_number":47,"context_line":"        # endpoint path. Not the cleanest method, but required"},{"line_number":48,"context_line":"        # to correctly handle ceph object gateway."},{"line_number":49,"context_line":"        endpoint \u003d self.endpoint.split(\"/v1/\")[0]"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        response \u003d self._request("}],"source_content_type":"text/x-python","patch_set":5,"id":"fbbcb52d_8e8b02cf","line":48,"range":{"start_line":48,"start_character":30,"end_line":48,"end_character":49},"updated":"2021-01-22 16:54:08.000000000","message":"I don\u0027t see any tests that exercise a more ceph-like URL... swapping the line below with something like\n\n endpoint \u003d urllib.parse.urljoin(self.endpoint, \"/\")\n\nall tests still pass.","commit_id":"966b14ba7d4a04967423525be1f0b6697937bcb1"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f687f5b787e3e3d22192abbd2cb8918eb9bcb885","unresolved":true,"context_lines":[{"line_number":46,"context_line":"        # NOTE(iokiwi): Strip off /v1/AUTH from end of"},{"line_number":47,"context_line":"        # endpoint path. Not the cleanest method, but required"},{"line_number":48,"context_line":"        # to correctly handle ceph object gateway."},{"line_number":49,"context_line":"        endpoint \u003d self.endpoint.split(\"/v1/\")[0]"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        response \u003d self._request("},{"line_number":52,"context_line":"            \"GET\","}],"source_content_type":"text/x-python","patch_set":5,"id":"a3343a95_2dc9e2be","line":49,"range":{"start_line":49,"start_character":41,"end_line":49,"end_character":43},"updated":"2021-01-22 16:54:08.000000000","message":"I think /v1/ is most common, but there\u0027s a chance some clouds would be configured to have swift endpoints like\n\n https://example.com/v1.0/some_account\n\nMight be safer to do something like\n\n endpoint \u003d self.endpoint.rstrip(\u0027/\u0027).rsplit(\u0027/\u0027, 2)[0]","commit_id":"966b14ba7d4a04967423525be1f0b6697937bcb1"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f687f5b787e3e3d22192abbd2cb8918eb9bcb885","unresolved":true,"context_lines":[{"line_number":56,"context_line":"        try:"},{"line_number":57,"context_line":"            return response.json()"},{"line_number":58,"context_line":"        except json.JSONDecodeError:"},{"line_number":59,"context_line":"            return response"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def storage_policy_list(self):"},{"line_number":62,"context_line":"        \"\"\"List available swift storage policies"}],"source_content_type":"text/x-python","patch_set":5,"id":"4a331418_50366855","line":59,"range":{"start_line":59,"start_character":12,"end_line":59,"end_character":27},"updated":"2021-01-22 16:54:08.000000000","message":"I was expecting us to raise some kind of exception... I guess it\u0027s on the caller to type-check whether they got back a dict or a Response?\n\nAlso, this path appears to be untested.","commit_id":"966b14ba7d4a04967423525be1f0b6697937bcb1"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f687f5b787e3e3d22192abbd2cb8918eb9bcb885","unresolved":true,"context_lines":[{"line_number":62,"context_line":"        \"\"\"List available swift storage policies"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"           :returns:"},{"line_number":65,"context_line":"             a list of storage policies"},{"line_number":66,"context_line":"        \"\"\""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        info \u003d self._info()"}],"source_content_type":"text/x-python","patch_set":5,"id":"1aa4fe42_f82243f3","line":65,"range":{"start_line":65,"start_character":23,"end_line":65,"end_character":39},"updated":"2021-01-22 16:54:08.000000000","message":"Might want to make the structure of these explicit in the docstring.","commit_id":"966b14ba7d4a04967423525be1f0b6697937bcb1"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f687f5b787e3e3d22192abbd2cb8918eb9bcb885","unresolved":true,"context_lines":[{"line_number":66,"context_line":"        \"\"\""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        info \u003d self._info()"},{"line_number":69,"context_line":"        data \u003d info[\"swift\"][\"policies\"]"},{"line_number":70,"context_line":"        return data"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def container_create("}],"source_content_type":"text/x-python","patch_set":5,"id":"60f3b50d_b03fa599","line":69,"range":{"start_line":69,"start_character":28,"end_line":69,"end_character":40},"updated":"2021-01-22 16:54:08.000000000","message":"Do we care about clusters that may be running Swift 1.x? This will KeyError on them. OTOH, 2.0.0 was released more than six years ago; lots of time to have upgraded.","commit_id":"966b14ba7d4a04967423525be1f0b6697937bcb1"}],"openstackclient/object/v1/container.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f687f5b787e3e3d22192abbd2cb8918eb9bcb885","unresolved":true,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def get_parser(self, prog_name):"},{"line_number":82,"context_line":"        parser \u003d super(ListContainerStoragePolicy, self).get_parser(prog_name)"},{"line_number":83,"context_line":"        return parser"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def take_action(self, parsed_args):"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"b7c6fe94_9b4b13df","line":83,"updated":"2021-01-22 16:54:08.000000000","message":"Should we just drop this? All it seems to do is call super and return the result.","commit_id":"966b14ba7d4a04967423525be1f0b6697937bcb1"}]}
