)]}'
{"ironic_inspector/main.py":[{"author":{"_account_id":12715,"name":"John Trowbridge","email":"trown@redhat.com","username":"trown"},"change_message_id":"7d4cbc5e49c3929751b83e01e4836dbfd0ceb97e","unresolved":false,"context_lines":[{"line_number":142,"context_line":"    data \u003d {\"resources\": []}"},{"line_number":143,"context_line":"    for resource in resources:"},{"line_number":144,"context_line":"        item \u003d {}"},{"line_number":145,"context_line":"        item[\u0027name\u0027] \u003d str(resource).split(\u0027/\u0027)[2]"},{"line_number":146,"context_line":"        item[\u0027links\u0027] \u003d [{"},{"line_number":147,"context_line":"            \"rel\": \"self\","},{"line_number":148,"context_line":"            \"href\": os.path.join(flask.request.url_root, str(resource)[1:]),"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_9ba47aa6","line":145,"updated":"2015-08-26 12:46:20.000000000","message":"How will this work for /v1/introspection/\u003cuuid\u003e/data?\n\nLooks like it will get a name of introspection.","commit_id":"9ee9a73304d6eac434f1c463d6aefbfa652c79cc"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"ce1496f00f2354d07e3b2438b74aaf2e398b8258","unresolved":false,"context_lines":[{"line_number":142,"context_line":"    data \u003d {\"resources\": []}"},{"line_number":143,"context_line":"    for resource in resources:"},{"line_number":144,"context_line":"        item \u003d {}"},{"line_number":145,"context_line":"        item[\u0027name\u0027] \u003d str(resource).split(\u0027/\u0027)[2]"},{"line_number":146,"context_line":"        item[\u0027links\u0027] \u003d [{"},{"line_number":147,"context_line":"            \"rel\": \"self\","},{"line_number":148,"context_line":"            \"href\": os.path.join(flask.request.url_root, str(resource)[1:]),"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_2fd6444f","line":145,"in_reply_to":"fa1b9901_9ba47aa6","updated":"2015-08-26 13:45:17.000000000","message":"Hmm thats very true, I should modify this and my UT to handle these cases.\n\nAlthough should /v1/introspection/\u003cuuid\u003e/data be in this level of discovery? Looking at the other projects they only discover the level just above the version e.g. /v1/introspection, /v1/continue etc.","commit_id":"9ee9a73304d6eac434f1c463d6aefbfa652c79cc"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"1e7caec77fa51dec870a4c2bae83c6dcc2c5ea7a","unresolved":false,"context_lines":[{"line_number":134,"context_line":"    resources \u003d []"},{"line_number":135,"context_line":"    for url in app.url_map.iter_rules():"},{"line_number":136,"context_line":"        if pat.match(str(url)):"},{"line_number":137,"context_line":"            resources.append(url)"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    if not resources:"},{"line_number":140,"context_line":"        raise utils.Error(\u0027not found\u0027, code\u003d404)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_fbabfe85","line":137,"updated":"2015-09-07 17:20:03.000000000","message":"not sure if it\u0027s not easier to just explicitly list supported versions (one version, actually) and top-level resources (currently only one as well)","commit_id":"7c7b6f39a96f94666415aaac5eb9cda921faf18b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"1e7caec77fa51dec870a4c2bae83c6dcc2c5ea7a","unresolved":false,"context_lines":[{"line_number":137,"context_line":"            resources.append(url)"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    if not resources:"},{"line_number":140,"context_line":"        raise utils.Error(\u0027not found\u0027, code\u003d404)"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    data \u003d {\"resources\": []}"},{"line_number":143,"context_line":"    for resource in resources:"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_9b976247","line":140,"updated":"2015-09-07 17:20:03.000000000","message":"_() required","commit_id":"7c7b6f39a96f94666415aaac5eb9cda921faf18b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5cbc042ed612bb72956cf2415d0f3d6067e09e3a","unresolved":false,"context_lines":[{"line_number":138,"context_line":"            [\"v%s\" % version[\u0027id\u0027].split(\u0027.\u0027)[0]])"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    data \u003d json.dumps({\"versions\": versions})"},{"line_number":141,"context_line":"    return data, 200, {\u0027Content-Type\u0027: \u0027application/json\u0027}"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"@app.route(\u0027/\u003cversion\u003e\u0027, methods\u003d[\u0027GET\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_a322caa1","line":141,"updated":"2015-09-10 08:30:26.000000000","message":"flask.jsonify(versions\u003dversions)","commit_id":"1279a57f020720b709f6a8dffb8724cab1efed21"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"a7f9e9edc6ffc250e6cb2af340ebbe5f6286bc36","unresolved":false,"context_lines":[{"line_number":138,"context_line":"            [\"v%s\" % version[\u0027id\u0027].split(\u0027.\u0027)[0]])"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    data \u003d json.dumps({\"versions\": versions})"},{"line_number":141,"context_line":"    return data, 200, {\u0027Content-Type\u0027: \u0027application/json\u0027}"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"@app.route(\u0027/\u003cversion\u003e\u0027, methods\u003d[\u0027GET\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_2ce22730","line":141,"in_reply_to":"da20952f_a322caa1","updated":"2015-09-10 09:47:46.000000000","message":"Done","commit_id":"1279a57f020720b709f6a8dffb8724cab1efed21"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5cbc042ed612bb72956cf2415d0f3d6067e09e3a","unresolved":false,"context_lines":[{"line_number":161,"context_line":"@app.route(\u0027/v1/introspection\u0027, methods\u003d[\u0027GET\u0027])"},{"line_number":162,"context_line":"@convert_exceptions"},{"line_number":163,"context_line":"def introspection():"},{"line_number":164,"context_line":"    resources \u003d {\u0027/v1/introspection/\u003cuuid\u003e\u0027}"},{"line_number":165,"context_line":"    data \u003d generate_resource_data(resources)"},{"line_number":166,"context_line":"    return json.dumps(data), 200, {\u0027Content-Type\u0027: \u0027application/json\u0027}"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_433acece","line":164,"updated":"2015-09-10 08:30:26.000000000","message":"this is not correct IMO, it should not contain patterns like \u003cuuid\u003e. I suggest leave this alone for now with TODO, and later we will provide a list with actual links to introspection statuses (i.e. with \u003cuuid\u003e filled in).","commit_id":"1279a57f020720b709f6a8dffb8724cab1efed21"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"a7f9e9edc6ffc250e6cb2af340ebbe5f6286bc36","unresolved":false,"context_lines":[{"line_number":161,"context_line":"@app.route(\u0027/v1/introspection\u0027, methods\u003d[\u0027GET\u0027])"},{"line_number":162,"context_line":"@convert_exceptions"},{"line_number":163,"context_line":"def introspection():"},{"line_number":164,"context_line":"    resources \u003d {\u0027/v1/introspection/\u003cuuid\u003e\u0027}"},{"line_number":165,"context_line":"    data \u003d generate_resource_data(resources)"},{"line_number":166,"context_line":"    return json.dumps(data), 200, {\u0027Content-Type\u0027: \u0027application/json\u0027}"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_0ce72341","line":164,"in_reply_to":"da20952f_433acece","updated":"2015-09-10 09:47:46.000000000","message":"Done","commit_id":"1279a57f020720b709f6a8dffb8724cab1efed21"}],"ironic_inspector/test/test_main.py":[{"author":{"_account_id":12715,"name":"John Trowbridge","email":"trown@redhat.com","username":"trown"},"change_message_id":"7d4cbc5e49c3929751b83e01e4836dbfd0ceb97e","unresolved":false,"context_lines":[{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    @mock.patch.object(main.app.url_map, \"iter_rules\", autospec\u003dTrue)"},{"line_number":209,"context_line":"    def test_version_endpoint(self, mock_rules):"},{"line_number":210,"context_line":"        mock_rules.return_value \u003d [\"/v1/endpoint1\", \"/v1/endpoint2\","},{"line_number":211,"context_line":"                                   \"/v2/endpoint1\", \"/v1/endpoint3\"]"},{"line_number":212,"context_line":"        endpoint \u003d \"/v1\""},{"line_number":213,"context_line":"        res \u003d self.app.get(endpoint)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_9b8a3abe","line":210,"updated":"2015-08-26 12:46:20.000000000","message":"It would be good to add an endpoint like /v1/endpoint1/UUID/data to have a test of a more complex endpoint.","commit_id":"9ee9a73304d6eac434f1c463d6aefbfa652c79cc"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"1e7caec77fa51dec870a4c2bae83c6dcc2c5ea7a","unresolved":false,"context_lines":[{"line_number":227,"context_line":"                \u0027links\u0027: [{"},{"line_number":228,"context_line":"                    \u0027rel\u0027: \u0027self\u0027,"},{"line_number":229,"context_line":"                    \u0027href\u0027: \u0027http://localhost/v1/endpoint2/\u003cuuid\u003e\u0027}]"},{"line_number":230,"context_line":"            },"},{"line_number":231,"context_line":"            {"},{"line_number":232,"context_line":"                \u0027name\u0027: \u0027endpoint3\u0027,"},{"line_number":233,"context_line":"                \u0027links\u0027: [{"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_bb926655","line":230,"updated":"2015-09-07 17:20:03.000000000","message":"this endpoint should not be listed here IMO. it should be listed when you request GET /v1/endpoint2 (would be something like \"get all current introspections\")","commit_id":"7c7b6f39a96f94666415aaac5eb9cda921faf18b"}]}
