)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":32553,"name":"Sven Kieske","email":"sven_oss@posteo.de","username":"skieske"},"change_message_id":"90239b410f08d3418ebcc04708e701f0aed4631d","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":8,"id":"0f1b43a0_33e1b6a2","updated":"2024-08-22 14:20:11.000000000","message":"TODO: Update Checksums as well.","commit_id":"429d7364385dc49bfb4955ee11cf79713388ed57"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"09b6420e864724200263580835f45dcc2cffa0bd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"39903468_a1be13df","updated":"2024-08-30 18:01:07.000000000","message":"very good, but it would be great to have yaml-file outside the repository\ntake a look at: I0b07da22fea27e0ff4e90aaad19e50d84ff9a121 for example","commit_id":"429d7364385dc49bfb4955ee11cf79713388ed57"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"d532f3bc255163a31bc1331595f3329858bb79cd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"00c38c47_bf8d9827","in_reply_to":"26d4936b_504b13df","updated":"2024-10-07 09:58:01.000000000","message":"sure, but it would be good to use configuration instead of templates override.","commit_id":"429d7364385dc49bfb4955ee11cf79713388ed57"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"f3ba6b0179ffd327e36ca36a5139d3907a687755","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"26d4936b_504b13df","in_reply_to":"39903468_a1be13df","updated":"2024-10-07 09:43:02.000000000","message":"Why? you can override those sources just like previously - with entries in kolla-build.conf","commit_id":"429d7364385dc49bfb4955ee11cf79713388ed57"}],"kolla/common/config.py":[{"author":{"_account_id":27339,"name":"Michal Arbet","email":"michal.arbet@ultimum.io","username":"michalarbet"},"change_message_id":"eb5dbcd68e9b4aa62955db625a16308b5c28c8f1","unresolved":true,"context_lines":[{"line_number":11,"context_line":"# limitations under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import itertools"},{"line_number":14,"context_line":"import json"},{"line_number":15,"context_line":"import os"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from oslo_config import cfg"}],"source_content_type":"text/x-python","patch_set":1,"id":"9897b1de_fd33397c","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":11},"updated":"2024-08-22 11:28:08.000000000","message":"Is really json better than yaml ? Moreover, if we already have kolla/template/repos.yaml in yaml ... and whole kolla is more about yaml and python rather then json...","commit_id":"37b15fff8af21f1e4287f6cab90c6f3c84793ca2"},{"author":{"_account_id":32553,"name":"Sven Kieske","email":"sven_oss@posteo.de","username":"skieske"},"change_message_id":"3d3081f69f916c2a269caa7205b8f3a131c78b6a","unresolved":true,"context_lines":[{"line_number":11,"context_line":"# limitations under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import itertools"},{"line_number":14,"context_line":"import json"},{"line_number":15,"context_line":"import os"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from oslo_config import cfg"}],"source_content_type":"text/x-python","patch_set":1,"id":"d9c8de7b_d193ea5c","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":11},"in_reply_to":"937a1a3c_8bc269d1","updated":"2024-08-22 12:29:23.000000000","message":"well we need to store this stuff somewhere on disk, so I don\u0027t see how I can save any lines?\nthe problem with a dict in a separate file - like it is now - is, that\u0027s it\u0027s really hard to update it, at least if you want to keep to our python indentation rules, which I failed to achieve (I tried).\n\nSo if you happen to have working code to update the dict assigned to the SOURCES variable inside the sources.py script without breaking indentation and everything I\u0027m happy to just use that.","commit_id":"37b15fff8af21f1e4287f6cab90c6f3c84793ca2"},{"author":{"_account_id":27339,"name":"Michal Arbet","email":"michal.arbet@ultimum.io","username":"michalarbet"},"change_message_id":"2d1c4f828eb00b48c61c33a4f6ce286250be027f","unresolved":true,"context_lines":[{"line_number":11,"context_line":"# limitations under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import itertools"},{"line_number":14,"context_line":"import json"},{"line_number":15,"context_line":"import os"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from oslo_config import cfg"}],"source_content_type":"text/x-python","patch_set":1,"id":"937a1a3c_8bc269d1","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":11},"in_reply_to":"96017120_5ad831af","updated":"2024-08-22 12:03:32.000000000","message":"Technically python dict !\u003d json. What is the benefit to convert python dict to json file and then load dict from a json file ? If you don\u0027t want to have a large change, just drop json -\u003e dict and just use dict as it is now, you will save 409 lines. In other words, if there are 409 new lines and convert needed from json it makes sense then to use yaml as we have it also for repos. But this is my opinion, others can have different ..","commit_id":"37b15fff8af21f1e4287f6cab90c6f3c84793ca2"},{"author":{"_account_id":32553,"name":"Sven Kieske","email":"sven_oss@posteo.de","username":"skieske"},"change_message_id":"dcd80ace53cfc3f6f3bfe6ec8dcb872dff040e4e","unresolved":true,"context_lines":[{"line_number":11,"context_line":"# limitations under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import itertools"},{"line_number":14,"context_line":"import json"},{"line_number":15,"context_line":"import os"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from oslo_config import cfg"}],"source_content_type":"text/x-python","patch_set":1,"id":"96017120_5ad831af","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":11},"in_reply_to":"9897b1de_fd33397c","updated":"2024-08-22 11:50:43.000000000","message":"well, I don\u0027t know, but I didn\u0027t want to change the whole parser logic, because the json is also used in config.py.\n\neven with this being a large change I wanted to keep it as small as possible and not also change the format.\n\nI also see no strict benefit here with using yaml or json, it\u0027s just some data we iterate over imho.","commit_id":"37b15fff8af21f1e4287f6cab90c6f3c84793ca2"},{"author":{"_account_id":32553,"name":"Sven Kieske","email":"sven_oss@posteo.de","username":"skieske"},"change_message_id":"90239b410f08d3418ebcc04708e701f0aed4631d","unresolved":false,"context_lines":[{"line_number":11,"context_line":"# limitations under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import itertools"},{"line_number":14,"context_line":"import json"},{"line_number":15,"context_line":"import os"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from oslo_config import cfg"}],"source_content_type":"text/x-python","patch_set":1,"id":"dc38e984_5ed843c7","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":11},"in_reply_to":"d9c8de7b_d193ea5c","updated":"2024-08-22 14:20:11.000000000","message":"rewrote to use yaml.","commit_id":"37b15fff8af21f1e4287f6cab90c6f3c84793ca2"},{"author":{"_account_id":27339,"name":"Michal Arbet","email":"michal.arbet@ultimum.io","username":"michalarbet"},"change_message_id":"eb5dbcd68e9b4aa62955db625a16308b5c28c8f1","unresolved":true,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"with open(\u0027sources.json\u0027) as f:"},{"line_number":24,"context_line":"    SOURCES \u003d json.load(f)"},{"line_number":25,"context_line":"    f.close()"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"BASE_OS_DISTRO \u003d [\u0027centos\u0027, \u0027debian\u0027, \u0027rocky\u0027, \u0027ubuntu\u0027]"},{"line_number":28,"context_line":"BASE_ARCH \u003d [\u0027x86_64\u0027, \u0027aarch64\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"27393299_24c65cca","line":25,"range":{"start_line":25,"start_character":0,"end_line":25,"end_character":13},"updated":"2024-08-22 11:28:08.000000000","message":"with statement is closing file automatically - remove.","commit_id":"37b15fff8af21f1e4287f6cab90c6f3c84793ca2"},{"author":{"_account_id":32553,"name":"Sven Kieske","email":"sven_oss@posteo.de","username":"skieske"},"change_message_id":"dcd80ace53cfc3f6f3bfe6ec8dcb872dff040e4e","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"with open(\u0027sources.json\u0027) as f:"},{"line_number":24,"context_line":"    SOURCES \u003d json.load(f)"},{"line_number":25,"context_line":"    f.close()"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"BASE_OS_DISTRO \u003d [\u0027centos\u0027, \u0027debian\u0027, \u0027rocky\u0027, \u0027ubuntu\u0027]"},{"line_number":28,"context_line":"BASE_ARCH \u003d [\u0027x86_64\u0027, \u0027aarch64\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"238f318e_a29ee200","line":25,"range":{"start_line":25,"start_character":0,"end_line":25,"end_character":13},"in_reply_to":"27393299_24c65cca","updated":"2024-08-22 11:50:43.000000000","message":"Done","commit_id":"37b15fff8af21f1e4287f6cab90c6f3c84793ca2"}],"kolla/common/update_prometheus_releases.py":[{"author":{"_account_id":27339,"name":"Michal Arbet","email":"michal.arbet@ultimum.io","username":"michalarbet"},"change_message_id":"eb5dbcd68e9b4aa62955db625a16308b5c28c8f1","unresolved":true,"context_lines":[{"line_number":52,"context_line":"    release \u003d get_github_latest_release(location)"},{"line_number":53,"context_line":"    # check if the release is newer than the current release"},{"line_number":54,"context_line":"    # if it is, update the version"},{"line_number":55,"context_line":"    if release:"},{"line_number":56,"context_line":"        current_version \u003d details.get(\"version\", \"\")"},{"line_number":57,"context_line":"        try:"},{"line_number":58,"context_line":"            if version.parse(release) \u003e version.parse(current_version):"}],"source_content_type":"text/x-python","patch_set":1,"id":"b858d1ef_cd42803f","line":55,"range":{"start_line":55,"start_character":0,"end_line":55,"end_character":15},"updated":"2024-08-22 11:28:08.000000000","message":"if release \u003d \"\" it means release is in releases or latest, but it actually fail to get release ...","commit_id":"37b15fff8af21f1e4287f6cab90c6f3c84793ca2"},{"author":{"_account_id":32553,"name":"Sven Kieske","email":"sven_oss@posteo.de","username":"skieske"},"change_message_id":"dcd80ace53cfc3f6f3bfe6ec8dcb872dff040e4e","unresolved":true,"context_lines":[{"line_number":52,"context_line":"    release \u003d get_github_latest_release(location)"},{"line_number":53,"context_line":"    # check if the release is newer than the current release"},{"line_number":54,"context_line":"    # if it is, update the version"},{"line_number":55,"context_line":"    if release:"},{"line_number":56,"context_line":"        current_version \u003d details.get(\"version\", \"\")"},{"line_number":57,"context_line":"        try:"},{"line_number":58,"context_line":"            if version.parse(release) \u003e version.parse(current_version):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff832e79_54808c58","line":55,"range":{"start_line":55,"start_character":0,"end_line":55,"end_character":15},"in_reply_to":"b858d1ef_cd42803f","updated":"2024-08-22 11:50:43.000000000","message":"I adjusted the function to not return an empty release and hopefully catch all errors now.","commit_id":"37b15fff8af21f1e4287f6cab90c6f3c84793ca2"},{"author":{"_account_id":32553,"name":"Sven Kieske","email":"sven_oss@posteo.de","username":"skieske"},"change_message_id":"3d3081f69f916c2a269caa7205b8f3a131c78b6a","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    release \u003d get_github_latest_release(location)"},{"line_number":53,"context_line":"    # check if the release is newer than the current release"},{"line_number":54,"context_line":"    # if it is, update the version"},{"line_number":55,"context_line":"    if release:"},{"line_number":56,"context_line":"        current_version \u003d details.get(\"version\", \"\")"},{"line_number":57,"context_line":"        try:"},{"line_number":58,"context_line":"            if version.parse(release) \u003e version.parse(current_version):"}],"source_content_type":"text/x-python","patch_set":1,"id":"f94740ad_5e673830","line":55,"range":{"start_line":55,"start_character":0,"end_line":55,"end_character":15},"in_reply_to":"ff832e79_54808c58","updated":"2024-08-22 12:29:23.000000000","message":"Done","commit_id":"37b15fff8af21f1e4287f6cab90c6f3c84793ca2"},{"author":{"_account_id":27339,"name":"Michal Arbet","email":"michal.arbet@ultimum.io","username":"michalarbet"},"change_message_id":"eb5dbcd68e9b4aa62955db625a16308b5c28c8f1","unresolved":true,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"with open(\"sources.json\", \"w\") as f:"},{"line_number":72,"context_line":"    json.dump(sources, f, indent\u003d4, separators\u003d(\u0027,\u0027, \u0027: \u0027))"},{"line_number":73,"context_line":"    f.close()"}],"source_content_type":"text/x-python","patch_set":1,"id":"c2b2d352_24b6cd12","line":73,"range":{"start_line":73,"start_character":0,"end_line":73,"end_character":13},"updated":"2024-08-22 11:28:08.000000000","message":"statement with automatically closing the file","commit_id":"37b15fff8af21f1e4287f6cab90c6f3c84793ca2"},{"author":{"_account_id":32553,"name":"Sven Kieske","email":"sven_oss@posteo.de","username":"skieske"},"change_message_id":"dcd80ace53cfc3f6f3bfe6ec8dcb872dff040e4e","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"with open(\"sources.json\", \"w\") as f:"},{"line_number":72,"context_line":"    json.dump(sources, f, indent\u003d4, separators\u003d(\u0027,\u0027, \u0027: \u0027))"},{"line_number":73,"context_line":"    f.close()"}],"source_content_type":"text/x-python","patch_set":1,"id":"d76fff97_20ec58e5","line":73,"range":{"start_line":73,"start_character":0,"end_line":73,"end_character":13},"in_reply_to":"c2b2d352_24b6cd12","updated":"2024-08-22 11:50:43.000000000","message":"Done","commit_id":"37b15fff8af21f1e4287f6cab90c6f3c84793ca2"},{"author":{"_account_id":27339,"name":"Michal Arbet","email":"michal.arbet@ultimum.io","username":"michalarbet"},"change_message_id":"4e4810e388b6e339f0d00f35d4a9268c216907f7","unresolved":true,"context_lines":[{"line_number":28,"context_line":"        r \u003d requests.get(url, headers\u003d{"},{"line_number":29,"context_line":"            \"Content-Type\": \"application/vnd.github.v3+json\"},"},{"line_number":30,"context_line":"            timeout\u003d10)"},{"line_number":31,"context_line":"    except requests.exceptions.RequestException as e:"},{"line_number":32,"context_line":"        print(f\"Failed to get {url}: {e}\")"},{"line_number":33,"context_line":"        release \u003d \"ERROR\""},{"line_number":34,"context_line":"        return release"},{"line_number":35,"context_line":"    release \u003d r.url.split(\"/\")[-1]"},{"line_number":36,"context_line":"    if release in [\"releases\", \"latest\"]:"},{"line_number":37,"context_line":"        print(f\"Failed to get release for {repo_path}\")"},{"line_number":38,"context_line":"        release \u003d \"ERROR\""},{"line_number":39,"context_line":"        return release"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    return release"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"c1bad56f_6fdfe730","line":39,"range":{"start_line":31,"start_character":0,"end_line":39,"end_character":22},"updated":"2024-08-22 11:55:49.000000000","message":"What about to do it more pythonic ..raise exception and then use try/except below in a code ?","commit_id":"7457e5089cdf0cc5a42c56fc82d76688e2b3b5ec"},{"author":{"_account_id":32553,"name":"Sven Kieske","email":"sven_oss@posteo.de","username":"skieske"},"change_message_id":"3d3081f69f916c2a269caa7205b8f3a131c78b6a","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        r \u003d requests.get(url, headers\u003d{"},{"line_number":29,"context_line":"            \"Content-Type\": \"application/vnd.github.v3+json\"},"},{"line_number":30,"context_line":"            timeout\u003d10)"},{"line_number":31,"context_line":"    except requests.exceptions.RequestException as e:"},{"line_number":32,"context_line":"        print(f\"Failed to get {url}: {e}\")"},{"line_number":33,"context_line":"        release \u003d \"ERROR\""},{"line_number":34,"context_line":"        return release"},{"line_number":35,"context_line":"    release \u003d r.url.split(\"/\")[-1]"},{"line_number":36,"context_line":"    if release in [\"releases\", \"latest\"]:"},{"line_number":37,"context_line":"        print(f\"Failed to get release for {repo_path}\")"},{"line_number":38,"context_line":"        release \u003d \"ERROR\""},{"line_number":39,"context_line":"        return release"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    return release"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"86050a92_31d917d7","line":39,"range":{"start_line":31,"start_character":0,"end_line":39,"end_character":22},"in_reply_to":"c1bad56f_6fdfe730","updated":"2024-08-22 12:29:23.000000000","message":"Done","commit_id":"7457e5089cdf0cc5a42c56fc82d76688e2b3b5ec"}]}
