)]}'
{"tools/updater.py":[{"author":{"_account_id":8749,"name":"Evgeniy L","email":"eli@mirantis.com","username":"evgeniyl"},"change_message_id":"a470dbd57e200a5e1c3e0fb3bc41ab6a90cfe7cf","unresolved":false,"context_lines":[{"line_number":347,"context_line":""},{"line_number":348,"context_line":"    missing_references \u003d {}"},{"line_number":349,"context_line":"    possibly_outdated_images \u003d []"},{"line_number":350,"context_line":"    print(\"\")"},{"line_number":351,"context_line":"    print(\"{:60s}\\t{:60s}\\t{:60s}\\t{:40s}\".format(\"Image repo\",\"Git repo\","},{"line_number":352,"context_line":"                                                  \"Image repo tag\",\"Git repo Commit ID\"))"},{"line_number":353,"context_line":"    for image_repo in image_repo_git_url:"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfb3d3c7_736abcb3","line":350,"range":{"start_line":350,"start_character":4,"end_line":350,"end_character":9},"updated":"2019-05-23 19:25:24.000000000","message":"What do you think about replacing `print` with `logger.info`? For the consistency, also it would be useful, in case we would want to flexibly configure the output (e.g. adding timestamps, pushing to file).","commit_id":"fe722844f7c48396d10cdd2ba8f6bf3a74b0decf"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"3d8911f418ee8e5dfb67250b721d2c31259aa1f7","unresolved":false,"context_lines":[{"line_number":347,"context_line":""},{"line_number":348,"context_line":"    missing_references \u003d {}"},{"line_number":349,"context_line":"    possibly_outdated_images \u003d []"},{"line_number":350,"context_line":"    print(\"\")"},{"line_number":351,"context_line":"    print(\"{:60s}\\t{:60s}\\t{:60s}\\t{:40s}\".format(\"Image repo\",\"Git repo\","},{"line_number":352,"context_line":"                                                  \"Image repo tag\",\"Git repo Commit ID\"))"},{"line_number":353,"context_line":"    for image_repo in image_repo_git_url:"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfb3d3c7_8dadc1ea","line":350,"range":{"start_line":350,"start_character":4,"end_line":350,"end_character":9},"in_reply_to":"bfb3d3c7_736abcb3","updated":"2019-05-24 14:23:09.000000000","message":"Done","commit_id":"fe722844f7c48396d10cdd2ba8f6bf3a74b0decf"},{"author":{"_account_id":8749,"name":"Evgeniy L","email":"eli@mirantis.com","username":"evgeniyl"},"change_message_id":"a470dbd57e200a5e1c3e0fb3bc41ab6a90cfe7cf","unresolved":false,"context_lines":[{"line_number":348,"context_line":"    missing_references \u003d {}"},{"line_number":349,"context_line":"    possibly_outdated_images \u003d []"},{"line_number":350,"context_line":"    print(\"\")"},{"line_number":351,"context_line":"    print(\"{:60s}\\t{:60s}\\t{:60s}\\t{:40s}\".format(\"Image repo\",\"Git repo\","},{"line_number":352,"context_line":"                                                  \"Image repo tag\",\"Git repo Commit ID\"))"},{"line_number":353,"context_line":"    for image_repo in image_repo_git_url:"},{"line_number":354,"context_line":"        git_repo \u003d image_repo_git_url[image_repo]"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfb3d3c7_13cb401e","line":351,"range":{"start_line":351,"start_character":10,"end_line":351,"end_character":11},"updated":"2019-05-23 19:25:24.000000000","message":"General comment on the quotes, in python you indeed can use both \u0027 and \" quotes, but for consistency it\u0027s preferable to use \u0027 or \" everywhere, except doc comments where we usually use triple double quotes \"\"\".","commit_id":"fe722844f7c48396d10cdd2ba8f6bf3a74b0decf"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"3d8911f418ee8e5dfb67250b721d2c31259aa1f7","unresolved":false,"context_lines":[{"line_number":348,"context_line":"    missing_references \u003d {}"},{"line_number":349,"context_line":"    possibly_outdated_images \u003d []"},{"line_number":350,"context_line":"    print(\"\")"},{"line_number":351,"context_line":"    print(\"{:60s}\\t{:60s}\\t{:60s}\\t{:40s}\".format(\"Image repo\",\"Git repo\","},{"line_number":352,"context_line":"                                                  \"Image repo tag\",\"Git repo Commit ID\"))"},{"line_number":353,"context_line":"    for image_repo in image_repo_git_url:"},{"line_number":354,"context_line":"        git_repo \u003d image_repo_git_url[image_repo]"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfb3d3c7_ed855d5b","line":351,"range":{"start_line":351,"start_character":10,"end_line":351,"end_character":11},"in_reply_to":"bfb3d3c7_13cb401e","updated":"2019-05-24 14:23:09.000000000","message":"Would do in a follow-up patch.","commit_id":"fe722844f7c48396d10cdd2ba8f6bf3a74b0decf"},{"author":{"_account_id":8749,"name":"Evgeniy L","email":"eli@mirantis.com","username":"evgeniyl"},"change_message_id":"a470dbd57e200a5e1c3e0fb3bc41ab6a90cfe7cf","unresolved":false,"context_lines":[{"line_number":354,"context_line":"        git_repo \u003d image_repo_git_url[image_repo]"},{"line_number":355,"context_line":"        if not image_repo in image_repo_tags:"},{"line_number":356,"context_line":"            missing_references[image_repo] \u003d image_repo + \" is not in image_repo_tags\""},{"line_number":357,"context_line":"            image_repo_tags[image_repo] \u003d get_image_tag(image_repo)"},{"line_number":358,"context_line":"        image_repo_tag \u003d image_repo_tags[image_repo]"},{"line_number":359,"context_line":"        if not git_repo in git_url_commit_ids:"},{"line_number":360,"context_line":"            missing_references[git_repo] \u003d git_repo + \" is not in git_url_commit_ids\""}],"source_content_type":"text/x-python","patch_set":2,"id":"bfb3d3c7_057d37e6","line":357,"range":{"start_line":357,"start_character":12,"end_line":357,"end_character":27},"updated":"2019-05-23 19:25:24.000000000","message":"Comment for this and 361 lines: \"verify\" implies that it does not have side effects on any external variable (in this case global), should the method be renamed to update_references?","commit_id":"fe722844f7c48396d10cdd2ba8f6bf3a74b0decf"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"3d8911f418ee8e5dfb67250b721d2c31259aa1f7","unresolved":false,"context_lines":[{"line_number":354,"context_line":"        git_repo \u003d image_repo_git_url[image_repo]"},{"line_number":355,"context_line":"        if not image_repo in image_repo_tags:"},{"line_number":356,"context_line":"            missing_references[image_repo] \u003d image_repo + \" is not in image_repo_tags\""},{"line_number":357,"context_line":"            image_repo_tags[image_repo] \u003d get_image_tag(image_repo)"},{"line_number":358,"context_line":"        image_repo_tag \u003d image_repo_tags[image_repo]"},{"line_number":359,"context_line":"        if not git_repo in git_url_commit_ids:"},{"line_number":360,"context_line":"            missing_references[git_repo] \u003d git_repo + \" is not in git_url_commit_ids\""}],"source_content_type":"text/x-python","patch_set":2,"id":"bfb3d3c7_adc9a5ac","line":357,"range":{"start_line":357,"start_character":12,"end_line":357,"end_character":27},"in_reply_to":"bfb3d3c7_057d37e6","updated":"2019-05-24 14:23:09.000000000","message":"Well, by the time we get to this verify_references() stage, we have traversed the whole versions_data_dict yaml structure and changed it. So I would answer that we only change temporary variables.","commit_id":"fe722844f7c48396d10cdd2ba8f6bf3a74b0decf"},{"author":{"_account_id":8749,"name":"Evgeniy L","email":"eli@mirantis.com","username":"evgeniyl"},"change_message_id":"a470dbd57e200a5e1c3e0fb3bc41ab6a90cfe7cf","unresolved":false,"context_lines":[{"line_number":355,"context_line":"        if not image_repo in image_repo_tags:"},{"line_number":356,"context_line":"            missing_references[image_repo] \u003d image_repo + \" is not in image_repo_tags\""},{"line_number":357,"context_line":"            image_repo_tags[image_repo] \u003d get_image_tag(image_repo)"},{"line_number":358,"context_line":"        image_repo_tag \u003d image_repo_tags[image_repo]"},{"line_number":359,"context_line":"        if not git_repo in git_url_commit_ids:"},{"line_number":360,"context_line":"            missing_references[git_repo] \u003d git_repo + \" is not in git_url_commit_ids\""},{"line_number":361,"context_line":"            git_url_commit_ids[git_repo] \u003d get_commit_id(git_repo)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfb3d3c7_a5d1cbcf","line":358,"range":{"start_line":358,"start_character":8,"end_line":358,"end_character":22},"updated":"2019-05-23 19:25:24.000000000","message":"It is only used in the print below, can it be used directly by referencing `image_repo_tags[image_repo]`?","commit_id":"fe722844f7c48396d10cdd2ba8f6bf3a74b0decf"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"3d8911f418ee8e5dfb67250b721d2c31259aa1f7","unresolved":false,"context_lines":[{"line_number":355,"context_line":"        if not image_repo in image_repo_tags:"},{"line_number":356,"context_line":"            missing_references[image_repo] \u003d image_repo + \" is not in image_repo_tags\""},{"line_number":357,"context_line":"            image_repo_tags[image_repo] \u003d get_image_tag(image_repo)"},{"line_number":358,"context_line":"        image_repo_tag \u003d image_repo_tags[image_repo]"},{"line_number":359,"context_line":"        if not git_repo in git_url_commit_ids:"},{"line_number":360,"context_line":"            missing_references[git_repo] \u003d git_repo + \" is not in git_url_commit_ids\""},{"line_number":361,"context_line":"            git_url_commit_ids[git_repo] \u003d get_commit_id(git_repo)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfb3d3c7_cdce59b3","line":358,"range":{"start_line":358,"start_character":8,"end_line":358,"end_character":22},"in_reply_to":"bfb3d3c7_a5d1cbcf","updated":"2019-05-24 14:23:09.000000000","message":"Done","commit_id":"fe722844f7c48396d10cdd2ba8f6bf3a74b0decf"},{"author":{"_account_id":8749,"name":"Evgeniy L","email":"eli@mirantis.com","username":"evgeniyl"},"change_message_id":"a470dbd57e200a5e1c3e0fb3bc41ab6a90cfe7cf","unresolved":false,"context_lines":[{"line_number":361,"context_line":"            git_url_commit_ids[git_repo] \u003d get_commit_id(git_repo)"},{"line_number":362,"context_line":"        git_repo_commit_id \u003d git_url_commit_ids[git_repo]"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"        if git_repo_commit_id not in image_repo_tags:"},{"line_number":365,"context_line":"            possibly_outdated_images.append(image_repo)"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"        print(\"{:60s}\\t{:60s}\\t{:60s}\\t{:40s}\".format(image_repo, git_repo,"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfb3d3c7_332f64a2","line":364,"range":{"start_line":364,"start_character":11,"end_line":364,"end_character":52},"updated":"2019-05-23 19:25:24.000000000","message":"Are you sure that this works correctly? image_repo_tags is a dict of \"image \u003d\u003e commit\" where `git_repo_commit_id` is a commit, `str in dict` only checks if the key exists in the dict, it does not check the value.","commit_id":"fe722844f7c48396d10cdd2ba8f6bf3a74b0decf"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"3d8911f418ee8e5dfb67250b721d2c31259aa1f7","unresolved":false,"context_lines":[{"line_number":361,"context_line":"            git_url_commit_ids[git_repo] \u003d get_commit_id(git_repo)"},{"line_number":362,"context_line":"        git_repo_commit_id \u003d git_url_commit_ids[git_repo]"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"        if git_repo_commit_id not in image_repo_tags:"},{"line_number":365,"context_line":"            possibly_outdated_images.append(image_repo)"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"        print(\"{:60s}\\t{:60s}\\t{:60s}\\t{:40s}\".format(image_repo, git_repo,"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfb3d3c7_cd2ad92a","line":364,"range":{"start_line":364,"start_character":11,"end_line":364,"end_character":52},"in_reply_to":"bfb3d3c7_332f64a2","updated":"2019-05-24 14:23:09.000000000","message":"Yes, I only need to know if there is a key available.","commit_id":"fe722844f7c48396d10cdd2ba8f6bf3a74b0decf"},{"author":{"_account_id":8749,"name":"Evgeniy L","email":"eli@mirantis.com","username":"evgeniyl"},"change_message_id":"a470dbd57e200a5e1c3e0fb3bc41ab6a90cfe7cf","unresolved":false,"context_lines":[{"line_number":364,"context_line":"        if git_repo_commit_id not in image_repo_tags:"},{"line_number":365,"context_line":"            possibly_outdated_images.append(image_repo)"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"        print(\"{:60s}\\t{:60s}\\t{:60s}\\t{:40s}\".format(image_repo, git_repo,"},{"line_number":368,"context_line":"                                                      image_repo_tag, git_repo_commit_id))"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"    if missing_references:"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfb3d3c7_93cbb070","line":367,"range":{"start_line":367,"start_character":8,"end_line":367,"end_character":13},"updated":"2019-05-23 19:25:24.000000000","message":"If we accumulate a text in a single variable and print it outside of the cycle, it would not cause problems when the output gets mixed with `Fetching ...` logging output from get_* calls.","commit_id":"fe722844f7c48396d10cdd2ba8f6bf3a74b0decf"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"3d8911f418ee8e5dfb67250b721d2c31259aa1f7","unresolved":false,"context_lines":[{"line_number":364,"context_line":"        if git_repo_commit_id not in image_repo_tags:"},{"line_number":365,"context_line":"            possibly_outdated_images.append(image_repo)"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"        print(\"{:60s}\\t{:60s}\\t{:60s}\\t{:40s}\".format(image_repo, git_repo,"},{"line_number":368,"context_line":"                                                      image_repo_tag, git_repo_commit_id))"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"    if missing_references:"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfb3d3c7_4deb49db","line":367,"range":{"start_line":367,"start_character":8,"end_line":367,"end_character":13},"in_reply_to":"bfb3d3c7_93cbb070","updated":"2019-05-24 14:23:09.000000000","message":"Done","commit_id":"fe722844f7c48396d10cdd2ba8f6bf3a74b0decf"},{"author":{"_account_id":8749,"name":"Evgeniy L","email":"eli@mirantis.com","username":"evgeniyl"},"change_message_id":"a470dbd57e200a5e1c3e0fb3bc41ab6a90cfe7cf","unresolved":false,"context_lines":[{"line_number":373,"context_line":"        for ref in missing_references:"},{"line_number":374,"context_line":"            print(missing_references[ref])"},{"line_number":375,"context_line":"        print(\"\")"},{"line_number":376,"context_line":"        print(\"Refs which are not in git_url_commit_ids mean that we have not been updating\" +"},{"line_number":377,"context_line":"            \"chart references (or there are no charts referred in versions.yaml)\")"},{"line_number":378,"context_line":"        print(\"Refs which are not in image_repo_tags mean that we have not been updating\" +"},{"line_number":379,"context_line":"            \"image tags (or there are no images referred in versions.yaml)\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfb3d3c7_3808a32a","line":376,"range":{"start_line":376,"start_character":92,"end_line":376,"end_character":94},"updated":"2019-05-23 19:25:24.000000000","message":"+ is unnecessary here and below.","commit_id":"fe722844f7c48396d10cdd2ba8f6bf3a74b0decf"},{"author":{"_account_id":8749,"name":"Evgeniy L","email":"eli@mirantis.com","username":"evgeniyl"},"change_message_id":"a470dbd57e200a5e1c3e0fb3bc41ab6a90cfe7cf","unresolved":false,"context_lines":[{"line_number":373,"context_line":"        for ref in missing_references:"},{"line_number":374,"context_line":"            print(missing_references[ref])"},{"line_number":375,"context_line":"        print(\"\")"},{"line_number":376,"context_line":"        print(\"Refs which are not in git_url_commit_ids mean that we have not been updating\" +"},{"line_number":377,"context_line":"            \"chart references (or there are no charts referred in versions.yaml)\")"},{"line_number":378,"context_line":"        print(\"Refs which are not in image_repo_tags mean that we have not been updating\" +"},{"line_number":379,"context_line":"            \"image tags (or there are no images referred in versions.yaml)\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfb3d3c7_b814934f","line":376,"range":{"start_line":376,"start_character":83,"end_line":376,"end_character":91},"updated":"2019-05-23 19:25:24.000000000","message":"nit: space after \"updating\"","commit_id":"fe722844f7c48396d10cdd2ba8f6bf3a74b0decf"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"3d8911f418ee8e5dfb67250b721d2c31259aa1f7","unresolved":false,"context_lines":[{"line_number":373,"context_line":"        for ref in missing_references:"},{"line_number":374,"context_line":"            print(missing_references[ref])"},{"line_number":375,"context_line":"        print(\"\")"},{"line_number":376,"context_line":"        print(\"Refs which are not in git_url_commit_ids mean that we have not been updating\" +"},{"line_number":377,"context_line":"            \"chart references (or there are no charts referred in versions.yaml)\")"},{"line_number":378,"context_line":"        print(\"Refs which are not in image_repo_tags mean that we have not been updating\" +"},{"line_number":379,"context_line":"            \"image tags (or there are no images referred in versions.yaml)\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfb3d3c7_ff298089","line":376,"range":{"start_line":376,"start_character":92,"end_line":376,"end_character":94},"in_reply_to":"bfb3d3c7_3808a32a","updated":"2019-05-24 14:23:09.000000000","message":"Done","commit_id":"fe722844f7c48396d10cdd2ba8f6bf3a74b0decf"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"3d8911f418ee8e5dfb67250b721d2c31259aa1f7","unresolved":false,"context_lines":[{"line_number":373,"context_line":"        for ref in missing_references:"},{"line_number":374,"context_line":"            print(missing_references[ref])"},{"line_number":375,"context_line":"        print(\"\")"},{"line_number":376,"context_line":"        print(\"Refs which are not in git_url_commit_ids mean that we have not been updating\" +"},{"line_number":377,"context_line":"            \"chart references (or there are no charts referred in versions.yaml)\")"},{"line_number":378,"context_line":"        print(\"Refs which are not in image_repo_tags mean that we have not been updating\" +"},{"line_number":379,"context_line":"            \"image tags (or there are no images referred in versions.yaml)\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfb3d3c7_1f2fb48e","line":376,"range":{"start_line":376,"start_character":83,"end_line":376,"end_character":91},"in_reply_to":"bfb3d3c7_b814934f","updated":"2019-05-24 14:23:09.000000000","message":"Done","commit_id":"fe722844f7c48396d10cdd2ba8f6bf3a74b0decf"},{"author":{"_account_id":8749,"name":"Evgeniy L","email":"eli@mirantis.com","username":"evgeniyl"},"change_message_id":"a470dbd57e200a5e1c3e0fb3bc41ab6a90cfe7cf","unresolved":false,"context_lines":[{"line_number":375,"context_line":"        print(\"\")"},{"line_number":376,"context_line":"        print(\"Refs which are not in git_url_commit_ids mean that we have not been updating\" +"},{"line_number":377,"context_line":"            \"chart references (or there are no charts referred in versions.yaml)\")"},{"line_number":378,"context_line":"        print(\"Refs which are not in image_repo_tags mean that we have not been updating\" +"},{"line_number":379,"context_line":"            \"image tags (or there are no images referred in versions.yaml)\")"},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"    if possibly_outdated_images:"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfb3d3c7_780e1b3c","line":378,"range":{"start_line":378,"start_character":80,"end_line":378,"end_character":88},"updated":"2019-05-23 19:25:24.000000000","message":"nit: space after \"updating\"","commit_id":"fe722844f7c48396d10cdd2ba8f6bf3a74b0decf"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"3d8911f418ee8e5dfb67250b721d2c31259aa1f7","unresolved":false,"context_lines":[{"line_number":375,"context_line":"        print(\"\")"},{"line_number":376,"context_line":"        print(\"Refs which are not in git_url_commit_ids mean that we have not been updating\" +"},{"line_number":377,"context_line":"            \"chart references (or there are no charts referred in versions.yaml)\")"},{"line_number":378,"context_line":"        print(\"Refs which are not in image_repo_tags mean that we have not been updating\" +"},{"line_number":379,"context_line":"            \"image tags (or there are no images referred in versions.yaml)\")"},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"    if possibly_outdated_images:"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfb3d3c7_bf1f8859","line":378,"range":{"start_line":378,"start_character":80,"end_line":378,"end_character":88},"in_reply_to":"bfb3d3c7_780e1b3c","updated":"2019-05-24 14:23:09.000000000","message":"Done","commit_id":"fe722844f7c48396d10cdd2ba8f6bf3a74b0decf"},{"author":{"_account_id":30173,"name":"Ian Pittwood","email":"pittwoodian@gmail.com","username":"ianp"},"change_message_id":"8d8147f074a2e852914beec328eeb5deb3fff93a","unresolved":false,"context_lines":[{"line_number":87,"context_line":"# Dict of git url\u0027s and cached commit id\u0027s: {\u0027git_url\u0027: \u0027commit_id\u0027}"},{"line_number":88,"context_line":"global git_url_commit_ids"},{"line_number":89,"context_line":"git_url_commit_ids \u003d {}"},{"line_number":90,"context_line":"# Dict of image repo\u0027s and (latest) tag of that image on quay.io: {\u0027image\u0027: \u0027tag\u0027}"},{"line_number":91,"context_line":"global image_repo_tags"},{"line_number":92,"context_line":"image_repo_tags \u003d {}"},{"line_number":93,"context_line":"dict_path \u003d None"}],"source_content_type":"text/x-python","patch_set":3,"id":"bfb3d3c7_f5067fce","line":90,"updated":"2019-05-24 15:31:35.000000000","message":"nit: line length","commit_id":"9d45d128cb19f9b4bd12107075b9d0d82142afa5"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"3592ebedd560d48e520b27bd853df52f3d4290c7","unresolved":false,"context_lines":[{"line_number":87,"context_line":"# Dict of git url\u0027s and cached commit id\u0027s: {\u0027git_url\u0027: \u0027commit_id\u0027}"},{"line_number":88,"context_line":"global git_url_commit_ids"},{"line_number":89,"context_line":"git_url_commit_ids \u003d {}"},{"line_number":90,"context_line":"# Dict of image repo\u0027s and (latest) tag of that image on quay.io: {\u0027image\u0027: \u0027tag\u0027}"},{"line_number":91,"context_line":"global image_repo_tags"},{"line_number":92,"context_line":"image_repo_tags \u003d {}"},{"line_number":93,"context_line":"dict_path \u003d None"}],"source_content_type":"text/x-python","patch_set":3,"id":"bfb3d3c7_972e1290","line":90,"in_reply_to":"bfb3d3c7_f5067fce","updated":"2019-05-27 15:22:17.000000000","message":"Done","commit_id":"9d45d128cb19f9b4bd12107075b9d0d82142afa5"},{"author":{"_account_id":30173,"name":"Ian Pittwood","email":"pittwoodian@gmail.com","username":"ianp"},"change_message_id":"8d8147f074a2e852914beec328eeb5deb3fff93a","unresolved":false,"context_lines":[{"line_number":192,"context_line":"            if res.ok:"},{"line_number":193,"context_line":"                break"},{"line_number":194,"context_line":"        except requests.exceptions.Timeout:"},{"line_number":195,"context_line":"            logging.warning(\"Failed to fetch url %s for %d/%d attempt(s)\", url, attempt, max_attempts)"},{"line_number":196,"context_line":"            time.sleep(5)"},{"line_number":197,"context_line":"        except requests.exceptions.TooManyRedirects:"},{"line_number":198,"context_line":"            logging.error(\"Failed to fetch url %s, TooManyRedirects\", url)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bfb3d3c7_150c73eb","line":195,"updated":"2019-05-24 15:31:35.000000000","message":"nit: line length","commit_id":"9d45d128cb19f9b4bd12107075b9d0d82142afa5"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"3592ebedd560d48e520b27bd853df52f3d4290c7","unresolved":false,"context_lines":[{"line_number":192,"context_line":"            if res.ok:"},{"line_number":193,"context_line":"                break"},{"line_number":194,"context_line":"        except requests.exceptions.Timeout:"},{"line_number":195,"context_line":"            logging.warning(\"Failed to fetch url %s for %d/%d attempt(s)\", url, attempt, max_attempts)"},{"line_number":196,"context_line":"            time.sleep(5)"},{"line_number":197,"context_line":"        except requests.exceptions.TooManyRedirects:"},{"line_number":198,"context_line":"            logging.error(\"Failed to fetch url %s, TooManyRedirects\", url)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bfb3d3c7_f73c2ec9","line":195,"in_reply_to":"bfb3d3c7_150c73eb","updated":"2019-05-27 15:22:17.000000000","message":"Done","commit_id":"9d45d128cb19f9b4bd12107075b9d0d82142afa5"},{"author":{"_account_id":30173,"name":"Ian Pittwood","email":"pittwoodian@gmail.com","username":"ianp"},"change_message_id":"8d8147f074a2e852914beec328eeb5deb3fff93a","unresolved":false,"context_lines":[{"line_number":338,"context_line":""},{"line_number":339,"context_line":"def verify_references():"},{"line_number":340,"context_line":"    \"\"\"Cross-verifies latest Git commit ID\u0027s and latest container image tags."},{"line_number":341,"context_line":"       Prints useful information on possibly missing references in versions.yaml"},{"line_number":342,"context_line":"       and Git \u003c-\u003e image tag mismatches."},{"line_number":343,"context_line":"    \"\"\""},{"line_number":344,"context_line":"    logging.debug(\u0027git_url_commit_ids: %s\u0027, git_url_commit_ids)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bfb3d3c7_f52f5f3c","line":341,"updated":"2019-05-24 15:31:35.000000000","message":"nit: line length","commit_id":"9d45d128cb19f9b4bd12107075b9d0d82142afa5"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"3592ebedd560d48e520b27bd853df52f3d4290c7","unresolved":false,"context_lines":[{"line_number":338,"context_line":""},{"line_number":339,"context_line":"def verify_references():"},{"line_number":340,"context_line":"    \"\"\"Cross-verifies latest Git commit ID\u0027s and latest container image tags."},{"line_number":341,"context_line":"       Prints useful information on possibly missing references in versions.yaml"},{"line_number":342,"context_line":"       and Git \u003c-\u003e image tag mismatches."},{"line_number":343,"context_line":"    \"\"\""},{"line_number":344,"context_line":"    logging.debug(\u0027git_url_commit_ids: %s\u0027, git_url_commit_ids)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bfb3d3c7_173a22cb","line":341,"in_reply_to":"bfb3d3c7_f52f5f3c","updated":"2019-05-27 15:22:17.000000000","message":"Done","commit_id":"9d45d128cb19f9b4bd12107075b9d0d82142afa5"},{"author":{"_account_id":30173,"name":"Ian Pittwood","email":"pittwoodian@gmail.com","username":"ianp"},"change_message_id":"8d8147f074a2e852914beec328eeb5deb3fff93a","unresolved":false,"context_lines":[{"line_number":361,"context_line":"    for image_repo in image_repo_git_url:"},{"line_number":362,"context_line":"        git_repo \u003d image_repo_git_url[image_repo]"},{"line_number":363,"context_line":"        if not image_repo in image_repo_tags:"},{"line_number":364,"context_line":"            missing_references[image_repo] \u003d image_repo + \" is not in image_repo_tags\""},{"line_number":365,"context_line":"            image_repo_tags[image_repo] \u003d get_image_tag(image_repo)"},{"line_number":366,"context_line":"        if not git_repo in git_url_commit_ids:"},{"line_number":367,"context_line":"            missing_references[git_repo] \u003d git_repo + \" is not in git_url_commit_ids\""}],"source_content_type":"text/x-python","patch_set":3,"id":"bfb3d3c7_d511fb05","line":364,"updated":"2019-05-24 15:31:35.000000000","message":"nit: line length","commit_id":"9d45d128cb19f9b4bd12107075b9d0d82142afa5"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"3592ebedd560d48e520b27bd853df52f3d4290c7","unresolved":false,"context_lines":[{"line_number":361,"context_line":"    for image_repo in image_repo_git_url:"},{"line_number":362,"context_line":"        git_repo \u003d image_repo_git_url[image_repo]"},{"line_number":363,"context_line":"        if not image_repo in image_repo_tags:"},{"line_number":364,"context_line":"            missing_references[image_repo] \u003d image_repo + \" is not in image_repo_tags\""},{"line_number":365,"context_line":"            image_repo_tags[image_repo] \u003d get_image_tag(image_repo)"},{"line_number":366,"context_line":"        if not git_repo in git_url_commit_ids:"},{"line_number":367,"context_line":"            missing_references[git_repo] \u003d git_repo + \" is not in git_url_commit_ids\""}],"source_content_type":"text/x-python","patch_set":3,"id":"bfb3d3c7_d72faa85","line":364,"in_reply_to":"bfb3d3c7_d511fb05","updated":"2019-05-27 15:22:17.000000000","message":"Done","commit_id":"9d45d128cb19f9b4bd12107075b9d0d82142afa5"},{"author":{"_account_id":30173,"name":"Ian Pittwood","email":"pittwoodian@gmail.com","username":"ianp"},"change_message_id":"8d8147f074a2e852914beec328eeb5deb3fff93a","unresolved":false,"context_lines":[{"line_number":364,"context_line":"            missing_references[image_repo] \u003d image_repo + \" is not in image_repo_tags\""},{"line_number":365,"context_line":"            image_repo_tags[image_repo] \u003d get_image_tag(image_repo)"},{"line_number":366,"context_line":"        if not git_repo in git_url_commit_ids:"},{"line_number":367,"context_line":"            missing_references[git_repo] \u003d git_repo + \" is not in git_url_commit_ids\""},{"line_number":368,"context_line":"            git_url_commit_ids[git_repo] \u003d get_commit_id(git_repo)"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"        table_content +\u003d table_format.format(image_repo,"}],"source_content_type":"text/x-python","patch_set":3,"id":"bfb3d3c7_95f703d4","line":367,"updated":"2019-05-24 15:31:35.000000000","message":"nit: line length","commit_id":"9d45d128cb19f9b4bd12107075b9d0d82142afa5"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"3592ebedd560d48e520b27bd853df52f3d4290c7","unresolved":false,"context_lines":[{"line_number":364,"context_line":"            missing_references[image_repo] \u003d image_repo + \" is not in image_repo_tags\""},{"line_number":365,"context_line":"            image_repo_tags[image_repo] \u003d get_image_tag(image_repo)"},{"line_number":366,"context_line":"        if not git_repo in git_url_commit_ids:"},{"line_number":367,"context_line":"            missing_references[git_repo] \u003d git_repo + \" is not in git_url_commit_ids\""},{"line_number":368,"context_line":"            git_url_commit_ids[git_repo] \u003d get_commit_id(git_repo)"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"        table_content +\u003d table_format.format(image_repo,"}],"source_content_type":"text/x-python","patch_set":3,"id":"bfb3d3c7_774efe6f","line":367,"in_reply_to":"bfb3d3c7_95f703d4","updated":"2019-05-27 15:22:17.000000000","message":"Done","commit_id":"9d45d128cb19f9b4bd12107075b9d0d82142afa5"},{"author":{"_account_id":30173,"name":"Ian Pittwood","email":"pittwoodian@gmail.com","username":"ianp"},"change_message_id":"8d8147f074a2e852914beec328eeb5deb3fff93a","unresolved":false,"context_lines":[{"line_number":387,"context_line":"        for ref in missing_references:"},{"line_number":388,"context_line":"            logging.warning(missing_references[ref])"},{"line_number":389,"context_line":"        logging.warning(\"\")"},{"line_number":390,"context_line":"        logging.warning(\"Refs which are not in git_url_commit_ids mean that we have not been updating \""},{"line_number":391,"context_line":"                        \"chart references (or there are no charts referred in versions.yaml)\")"},{"line_number":392,"context_line":"        logging.warning(\"Refs which are not in image_repo_tags mean that we have not been updating \""},{"line_number":393,"context_line":"                        \"image tags (or there are no images referred in versions.yaml)\")"},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"    if possibly_outdated_images:"},{"line_number":396,"context_line":"        logging.warning(\"\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"bfb3d3c7_55fd0baf","line":393,"range":{"start_line":390,"start_character":0,"end_line":393,"end_character":88},"updated":"2019-05-24 15:31:35.000000000","message":"nit: line length","commit_id":"9d45d128cb19f9b4bd12107075b9d0d82142afa5"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"3592ebedd560d48e520b27bd853df52f3d4290c7","unresolved":false,"context_lines":[{"line_number":387,"context_line":"        for ref in missing_references:"},{"line_number":388,"context_line":"            logging.warning(missing_references[ref])"},{"line_number":389,"context_line":"        logging.warning(\"\")"},{"line_number":390,"context_line":"        logging.warning(\"Refs which are not in git_url_commit_ids mean that we have not been updating \""},{"line_number":391,"context_line":"                        \"chart references (or there are no charts referred in versions.yaml)\")"},{"line_number":392,"context_line":"        logging.warning(\"Refs which are not in image_repo_tags mean that we have not been updating \""},{"line_number":393,"context_line":"                        \"image tags (or there are no images referred in versions.yaml)\")"},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"    if possibly_outdated_images:"},{"line_number":396,"context_line":"        logging.warning(\"\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"bfb3d3c7_97537217","line":393,"range":{"start_line":390,"start_character":0,"end_line":393,"end_character":88},"in_reply_to":"bfb3d3c7_55fd0baf","updated":"2019-05-27 15:22:17.000000000","message":"Done","commit_id":"9d45d128cb19f9b4bd12107075b9d0d82142afa5"},{"author":{"_account_id":30173,"name":"Ian Pittwood","email":"pittwoodian@gmail.com","username":"ianp"},"change_message_id":"8d8147f074a2e852914beec328eeb5deb3fff93a","unresolved":false,"context_lines":[{"line_number":405,"context_line":"    \"\"\""},{"line_number":406,"context_line":""},{"line_number":407,"context_line":"    parser.add_argument(\u0027--in-file\u0027, default\u003d\u0027versions.yaml\u0027,"},{"line_number":408,"context_line":"                        help\u003d\u0027/path/to/versions.yaml input file; default - \"./versions.yaml\"\u0027)"},{"line_number":409,"context_line":""},{"line_number":410,"context_line":"    parser.add_argument(\u0027--out-file\u0027, default\u003d\u0027versions.yaml\u0027,"},{"line_number":411,"context_line":"                        help\u003d\u0027name of output file; default - \"versions.yaml\" (overwrite existing)\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bfb3d3c7_1535538f","line":408,"updated":"2019-05-24 15:31:35.000000000","message":"nit: line length","commit_id":"9d45d128cb19f9b4bd12107075b9d0d82142afa5"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"3592ebedd560d48e520b27bd853df52f3d4290c7","unresolved":false,"context_lines":[{"line_number":405,"context_line":"    \"\"\""},{"line_number":406,"context_line":""},{"line_number":407,"context_line":"    parser.add_argument(\u0027--in-file\u0027, default\u003d\u0027versions.yaml\u0027,"},{"line_number":408,"context_line":"                        help\u003d\u0027/path/to/versions.yaml input file; default - \"./versions.yaml\"\u0027)"},{"line_number":409,"context_line":""},{"line_number":410,"context_line":"    parser.add_argument(\u0027--out-file\u0027, default\u003d\u0027versions.yaml\u0027,"},{"line_number":411,"context_line":"                        help\u003d\u0027name of output file; default - \"versions.yaml\" (overwrite existing)\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bfb3d3c7_375406fe","line":408,"in_reply_to":"bfb3d3c7_1535538f","updated":"2019-05-27 15:22:17.000000000","message":"Done","commit_id":"9d45d128cb19f9b4bd12107075b9d0d82142afa5"},{"author":{"_account_id":30173,"name":"Ian Pittwood","email":"pittwoodian@gmail.com","username":"ianp"},"change_message_id":"8d8147f074a2e852914beec328eeb5deb3fff93a","unresolved":false,"context_lines":[{"line_number":408,"context_line":"                        help\u003d\u0027/path/to/versions.yaml input file; default - \"./versions.yaml\"\u0027)"},{"line_number":409,"context_line":""},{"line_number":410,"context_line":"    parser.add_argument(\u0027--out-file\u0027, default\u003d\u0027versions.yaml\u0027,"},{"line_number":411,"context_line":"                        help\u003d\u0027name of output file; default - \"versions.yaml\" (overwrite existing)\u0027)"},{"line_number":412,"context_line":""},{"line_number":413,"context_line":"    parser.add_argument(\u0027--skip\u0027,"},{"line_number":414,"context_line":"                        help\u003d\u0027comma-delimited list of images and charts to skip during the update\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bfb3d3c7_b525675e","line":411,"updated":"2019-05-24 15:31:35.000000000","message":"nit: line length","commit_id":"9d45d128cb19f9b4bd12107075b9d0d82142afa5"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"3592ebedd560d48e520b27bd853df52f3d4290c7","unresolved":false,"context_lines":[{"line_number":408,"context_line":"                        help\u003d\u0027/path/to/versions.yaml input file; default - \"./versions.yaml\"\u0027)"},{"line_number":409,"context_line":""},{"line_number":410,"context_line":"    parser.add_argument(\u0027--out-file\u0027, default\u003d\u0027versions.yaml\u0027,"},{"line_number":411,"context_line":"                        help\u003d\u0027name of output file; default - \"versions.yaml\" (overwrite existing)\u0027)"},{"line_number":412,"context_line":""},{"line_number":413,"context_line":"    parser.add_argument(\u0027--skip\u0027,"},{"line_number":414,"context_line":"                        help\u003d\u0027comma-delimited list of images and charts to skip during the update\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bfb3d3c7_57597a32","line":411,"in_reply_to":"bfb3d3c7_b525675e","updated":"2019-05-27 15:22:17.000000000","message":"Done","commit_id":"9d45d128cb19f9b4bd12107075b9d0d82142afa5"},{"author":{"_account_id":30173,"name":"Ian Pittwood","email":"pittwoodian@gmail.com","username":"ianp"},"change_message_id":"0edb601349dfbcaa4299ef4ef11ae19342c2a9d0","unresolved":false,"context_lines":[{"line_number":186,"context_line":"    max_attempts \u003d 10"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    hash_image \u003d image.split(\u0027/\u0027)"},{"line_number":189,"context_line":"    url \u003d \u0027https://quay.io/api/v1/repository/{}/{}/tag/\u0027"},{"line_number":190,"context_line":"    url \u003d url.format(hash_image[1], hash_image[2])"},{"line_number":191,"context_line":"    logging.info(\"Fetching latest tag for image %s (%s)...\", image, url)"},{"line_number":192,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bfb3d3c7_8031df5c","line":189,"range":{"start_line":189,"start_character":10,"end_line":189,"end_character":11},"updated":"2019-05-28 14:41:32.000000000","message":"nit: We\u0027re using \u0027 some places and \" other places. PEP-8 suggests sticking to one or the other","commit_id":"198694eeb54308f667e8c2747835660f3ae7d728"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"df993c611e492a6a71ef1849c456dd8057cf83b2","unresolved":false,"context_lines":[{"line_number":186,"context_line":"    max_attempts \u003d 10"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    hash_image \u003d image.split(\u0027/\u0027)"},{"line_number":189,"context_line":"    url \u003d \u0027https://quay.io/api/v1/repository/{}/{}/tag/\u0027"},{"line_number":190,"context_line":"    url \u003d url.format(hash_image[1], hash_image[2])"},{"line_number":191,"context_line":"    logging.info(\"Fetching latest tag for image %s (%s)...\", image, url)"},{"line_number":192,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bfb3d3c7_6820149c","line":189,"range":{"start_line":189,"start_character":10,"end_line":189,"end_character":11},"in_reply_to":"bfb3d3c7_8031df5c","updated":"2019-05-31 08:35:16.000000000","message":"Done","commit_id":"198694eeb54308f667e8c2747835660f3ae7d728"},{"author":{"_account_id":30173,"name":"Ian Pittwood","email":"pittwoodian@gmail.com","username":"ianp"},"change_message_id":"0edb601349dfbcaa4299ef4ef11ae19342c2a9d0","unresolved":false,"context_lines":[{"line_number":271,"context_line":"                git_url \u003d v[\u0027location\u0027]"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"                if skip_list and k in skip_list:"},{"line_number":274,"context_line":"                    logging.info(\"Ignoring chart %s, it is in a \" +"},{"line_number":275,"context_line":"                                 \"skip list (%s)\", k, git_url)"},{"line_number":276,"context_line":"                    continue"},{"line_number":277,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bfb3d3c7_e06d3b32","line":274,"range":{"start_line":274,"start_character":66,"end_line":274,"end_character":67},"updated":"2019-05-28 14:41:32.000000000","message":"The + operator is unnecessary on string line breaks. Same for all the other broken up strings in this file","commit_id":"198694eeb54308f667e8c2747835660f3ae7d728"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"df993c611e492a6a71ef1849c456dd8057cf83b2","unresolved":false,"context_lines":[{"line_number":271,"context_line":"                git_url \u003d v[\u0027location\u0027]"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"                if skip_list and k in skip_list:"},{"line_number":274,"context_line":"                    logging.info(\"Ignoring chart %s, it is in a \" +"},{"line_number":275,"context_line":"                                 \"skip list (%s)\", k, git_url)"},{"line_number":276,"context_line":"                    continue"},{"line_number":277,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bfb3d3c7_882308a7","line":274,"range":{"start_line":274,"start_character":66,"end_line":274,"end_character":67},"in_reply_to":"bfb3d3c7_e06d3b32","updated":"2019-05-31 08:35:16.000000000","message":"Done","commit_id":"198694eeb54308f667e8c2747835660f3ae7d728"},{"author":{"_account_id":30173,"name":"Ian Pittwood","email":"pittwoodian@gmail.com","username":"ianp"},"change_message_id":"e949943c411bf50fa5f5fef625123dfc5c7db233","unresolved":false,"context_lines":[{"line_number":87,"context_line":"}"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"logging.basicConfig(level\u003dlogging.INFO)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"# Dict of git url\u0027s and cached commit id\u0027s: {\"git_url\": \"commit_id\"}"},{"line_number":92,"context_line":"global git_url_commit_ids"},{"line_number":93,"context_line":"git_url_commit_ids \u003d {}"}],"source_content_type":"text/x-python","patch_set":6,"id":"bfb3d3c7_dddd39dd","line":90,"updated":"2019-05-31 14:11:44.000000000","message":"I think we need a line to declare our logger for this module:\n\nLOG \u003d logging.getLogger(__name__)","commit_id":"f6a84659e28fdf83ea5682355f18b48bb1910667"},{"author":{"_account_id":30173,"name":"Ian Pittwood","email":"pittwoodian@gmail.com","username":"ianp"},"change_message_id":"a46eb3d286921e366047a44103cfb76561662869","unresolved":false,"context_lines":[{"line_number":87,"context_line":"}"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"logging.basicConfig(level\u003dlogging.INFO)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"# Dict of git url\u0027s and cached commit id\u0027s: {\"git_url\": \"commit_id\"}"},{"line_number":92,"context_line":"global git_url_commit_ids"},{"line_number":93,"context_line":"git_url_commit_ids \u003d {}"}],"source_content_type":"text/x-python","patch_set":6,"id":"9fb8cfa7_27553b51","line":90,"in_reply_to":"9fb8cfa7_227d31b1","updated":"2019-06-03 20:52:47.000000000","message":"It allows the logger to send back what module a message is from","commit_id":"f6a84659e28fdf83ea5682355f18b48bb1910667"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"b6fd3625ed7bc7a14d2a2bb3449a35d6988538e5","unresolved":false,"context_lines":[{"line_number":87,"context_line":"}"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"logging.basicConfig(level\u003dlogging.INFO)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"# Dict of git url\u0027s and cached commit id\u0027s: {\"git_url\": \"commit_id\"}"},{"line_number":92,"context_line":"global git_url_commit_ids"},{"line_number":93,"context_line":"git_url_commit_ids \u003d {}"}],"source_content_type":"text/x-python","patch_set":6,"id":"9fb8cfa7_d8bc356b","line":90,"in_reply_to":"9fb8cfa7_27553b51","updated":"2019-06-04 16:55:16.000000000","message":"It\u0027s `__main__` everywhere for this utility. So it doesn\u0027t really make any sense, right?","commit_id":"f6a84659e28fdf83ea5682355f18b48bb1910667"},{"author":{"_account_id":30173,"name":"Ian Pittwood","email":"pittwoodian@gmail.com","username":"ianp"},"change_message_id":"53493dcdf580516b466b33fcd1df82d176f24801","unresolved":false,"context_lines":[{"line_number":87,"context_line":"}"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"logging.basicConfig(level\u003dlogging.INFO)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"# Dict of git url\u0027s and cached commit id\u0027s: {\"git_url\": \"commit_id\"}"},{"line_number":92,"context_line":"global git_url_commit_ids"},{"line_number":93,"context_line":"git_url_commit_ids \u003d {}"}],"source_content_type":"text/x-python","patch_set":6,"id":"9fb8cfa7_095cb723","line":90,"in_reply_to":"9fb8cfa7_d8bc356b","updated":"2019-06-04 17:06:52.000000000","message":"It\u0027s standard practice. Plus if additional python modules are added to treasuremap in the future it will be more helpful","commit_id":"f6a84659e28fdf83ea5682355f18b48bb1910667"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"30174eff63bc10531db85ccda5d5d78def095bb0","unresolved":false,"context_lines":[{"line_number":87,"context_line":"}"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"logging.basicConfig(level\u003dlogging.INFO)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"# Dict of git url\u0027s and cached commit id\u0027s: {\"git_url\": \"commit_id\"}"},{"line_number":92,"context_line":"global git_url_commit_ids"},{"line_number":93,"context_line":"git_url_commit_ids \u003d {}"}],"source_content_type":"text/x-python","patch_set":6,"id":"9fb8cfa7_227d31b1","line":90,"in_reply_to":"bfb3d3c7_dddd39dd","updated":"2019-06-03 15:10:50.000000000","message":"Done.\nBut what does it bring? 4 letters shorter, and that\u0027s it?","commit_id":"f6a84659e28fdf83ea5682355f18b48bb1910667"},{"author":{"_account_id":30173,"name":"Ian Pittwood","email":"pittwoodian@gmail.com","username":"ianp"},"change_message_id":"e949943c411bf50fa5f5fef625123dfc5c7db233","unresolved":false,"context_lines":[{"line_number":89,"context_line":"logging.basicConfig(level\u003dlogging.INFO)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"# Dict of git url\u0027s and cached commit id\u0027s: {\"git_url\": \"commit_id\"}"},{"line_number":92,"context_line":"global git_url_commit_ids"},{"line_number":93,"context_line":"git_url_commit_ids \u003d {}"},{"line_number":94,"context_line":"# Dict of image repo\u0027s and (latest) tag of that image on quay.io:"},{"line_number":95,"context_line":"# {\"image\": \"tag\"}"}],"source_content_type":"text/x-python","patch_set":6,"id":"bfb3d3c7_5de869b1","line":92,"updated":"2019-05-31 14:11:44.000000000","message":"Since this variable is declared at the top level, I don\u0027t think you need the \"global\" declaration. I hadn\u0027t really seen \"global\" before but I think it\u0027s meant for modifying scoped variables.\n\nhttps://www.geeksforgeeks.org/global-keyword-in-python/","commit_id":"f6a84659e28fdf83ea5682355f18b48bb1910667"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"30174eff63bc10531db85ccda5d5d78def095bb0","unresolved":false,"context_lines":[{"line_number":89,"context_line":"logging.basicConfig(level\u003dlogging.INFO)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"# Dict of git url\u0027s and cached commit id\u0027s: {\"git_url\": \"commit_id\"}"},{"line_number":92,"context_line":"global git_url_commit_ids"},{"line_number":93,"context_line":"git_url_commit_ids \u003d {}"},{"line_number":94,"context_line":"# Dict of image repo\u0027s and (latest) tag of that image on quay.io:"},{"line_number":95,"context_line":"# {\"image\": \"tag\"}"}],"source_content_type":"text/x-python","patch_set":6,"id":"9fb8cfa7_02802d8b","line":92,"in_reply_to":"bfb3d3c7_5de869b1","updated":"2019-06-03 15:10:50.000000000","message":"Done","commit_id":"f6a84659e28fdf83ea5682355f18b48bb1910667"},{"author":{"_account_id":30173,"name":"Ian Pittwood","email":"pittwoodian@gmail.com","username":"ianp"},"change_message_id":"e949943c411bf50fa5f5fef625123dfc5c7db233","unresolved":false,"context_lines":[{"line_number":93,"context_line":"git_url_commit_ids \u003d {}"},{"line_number":94,"context_line":"# Dict of image repo\u0027s and (latest) tag of that image on quay.io:"},{"line_number":95,"context_line":"# {\"image\": \"tag\"}"},{"line_number":96,"context_line":"global image_repo_tags"},{"line_number":97,"context_line":"image_repo_tags \u003d {}"},{"line_number":98,"context_line":"dict_path \u003d None"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"bfb3d3c7_fdd27dff","line":96,"updated":"2019-05-31 14:11:44.000000000","message":"ditto","commit_id":"f6a84659e28fdf83ea5682355f18b48bb1910667"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"30174eff63bc10531db85ccda5d5d78def095bb0","unresolved":false,"context_lines":[{"line_number":93,"context_line":"git_url_commit_ids \u003d {}"},{"line_number":94,"context_line":"# Dict of image repo\u0027s and (latest) tag of that image on quay.io:"},{"line_number":95,"context_line":"# {\"image\": \"tag\"}"},{"line_number":96,"context_line":"global image_repo_tags"},{"line_number":97,"context_line":"image_repo_tags \u003d {}"},{"line_number":98,"context_line":"dict_path \u003d None"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9fb8cfa7_627329e9","line":96,"in_reply_to":"bfb3d3c7_fdd27dff","updated":"2019-06-03 15:10:50.000000000","message":"Done","commit_id":"f6a84659e28fdf83ea5682355f18b48bb1910667"},{"author":{"_account_id":30173,"name":"Ian Pittwood","email":"pittwoodian@gmail.com","username":"ianp"},"change_message_id":"e949943c411bf50fa5f5fef625123dfc5c7db233","unresolved":false,"context_lines":[{"line_number":145,"context_line":"    \"\"\"Accepts url of git repo and returns corresponding git commit hash\"\"\""},{"line_number":146,"context_line":"    # If we don\u0027t have this git url in our url\u0027s dictionary,"},{"line_number":147,"context_line":"    # fetch latest commit ID and add new dictionary entry"},{"line_number":148,"context_line":"    logging.debug(\"git_url_commit_ids: %s\", git_url_commit_ids)"},{"line_number":149,"context_line":"    if url not in git_url_commit_ids:"},{"line_number":150,"context_line":"        logging.debug(\"git url: %s \" +"},{"line_number":151,"context_line":"                      \"is not in git_url_commit_ids dict; \""}],"source_content_type":"text/x-python","patch_set":6,"id":"bfb3d3c7_bda96524","line":148,"range":{"start_line":148,"start_character":4,"end_line":148,"end_character":11},"updated":"2019-05-31 14:11:44.000000000","message":"We should replace \"logging\" with \"LOG\" for these lines after my previous comment on line 90 is done","commit_id":"f6a84659e28fdf83ea5682355f18b48bb1910667"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"30174eff63bc10531db85ccda5d5d78def095bb0","unresolved":false,"context_lines":[{"line_number":145,"context_line":"    \"\"\"Accepts url of git repo and returns corresponding git commit hash\"\"\""},{"line_number":146,"context_line":"    # If we don\u0027t have this git url in our url\u0027s dictionary,"},{"line_number":147,"context_line":"    # fetch latest commit ID and add new dictionary entry"},{"line_number":148,"context_line":"    logging.debug(\"git_url_commit_ids: %s\", git_url_commit_ids)"},{"line_number":149,"context_line":"    if url not in git_url_commit_ids:"},{"line_number":150,"context_line":"        logging.debug(\"git url: %s \" +"},{"line_number":151,"context_line":"                      \"is not in git_url_commit_ids dict; \""}],"source_content_type":"text/x-python","patch_set":6,"id":"9fb8cfa7_427625db","line":148,"range":{"start_line":148,"start_character":4,"end_line":148,"end_character":11},"in_reply_to":"bfb3d3c7_bda96524","updated":"2019-06-03 15:10:50.000000000","message":"Done","commit_id":"f6a84659e28fdf83ea5682355f18b48bb1910667"},{"author":{"_account_id":8749,"name":"Evgeniy L","email":"eli@mirantis.com","username":"evgeniyl"},"change_message_id":"e7882ccbbc586dc370f793bf28fe9761bd00d0f0","unresolved":false,"context_lines":[{"line_number":392,"context_line":""},{"line_number":393,"context_line":"    # Loop over"},{"line_number":394,"context_line":"    #   image_repo_git_url ({\"image_repo\", \"git_repo\"}),"},{"line_number":395,"context_line":"    # and verify it\u0027s contents to the contents of"},{"line_number":396,"context_line":"    #   git_url_commit_ids ({\"git_repo\": \"commit_id\"})"},{"line_number":397,"context_line":"    #   image_repo_tags ({\"image_repo\": \"tag\"})"},{"line_number":398,"context_line":"    # dictionaries"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_1462593f","line":395,"range":{"start_line":395,"start_character":17,"end_line":395,"end_character":49},"updated":"2019-06-21 18:37:14.000000000","message":"Looks like there is a typo, do you think this can be rephrased?","commit_id":"6c230017982c8d1a7bb18679aec76a4e9d8d0ae1"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"f14be07573658af7b4a9e8134c7d79e51f5a49a5","unresolved":false,"context_lines":[{"line_number":392,"context_line":""},{"line_number":393,"context_line":"    # Loop over"},{"line_number":394,"context_line":"    #   image_repo_git_url ({\"image_repo\", \"git_repo\"}),"},{"line_number":395,"context_line":"    # and verify it\u0027s contents to the contents of"},{"line_number":396,"context_line":"    #   git_url_commit_ids ({\"git_repo\": \"commit_id\"})"},{"line_number":397,"context_line":"    #   image_repo_tags ({\"image_repo\": \"tag\"})"},{"line_number":398,"context_line":"    # dictionaries"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_1737bbb2","line":395,"range":{"start_line":395,"start_character":17,"end_line":395,"end_character":49},"in_reply_to":"9fb8cfa7_1462593f","updated":"2019-06-21 19:22:18.000000000","message":"No typo, but I\u0027ve tried to make it read better.","commit_id":"6c230017982c8d1a7bb18679aec76a4e9d8d0ae1"},{"author":{"_account_id":8749,"name":"Evgeniy L","email":"eli@mirantis.com","username":"evgeniyl"},"change_message_id":"e7882ccbbc586dc370f793bf28fe9761bd00d0f0","unresolved":false,"context_lines":[{"line_number":401,"context_line":"        if not image_repo in image_repo_tags:"},{"line_number":402,"context_line":"            missing_references[image_repo] \u003d \\"},{"line_number":403,"context_line":"                image_repo + \" is not in image_repo_tags\""},{"line_number":404,"context_line":"            image_repo_tags[image_repo] \u003d get_image_tag(image_repo)"},{"line_number":405,"context_line":"        if not git_repo in git_url_commit_ids:"},{"line_number":406,"context_line":"            missing_references[git_repo] \u003d \\"},{"line_number":407,"context_line":"                git_repo + \" is not in git_url_commit_ids\""}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_54b8d128","line":404,"range":{"start_line":404,"start_character":39,"end_line":404,"end_character":42},"updated":"2019-06-21 18:37:14.000000000","message":"For this line and for 408.\nThe start of the discussion: https://review.opendev.org/#/c/661004/2..7/tools/updater.py\n\n`image_repo_tags` and `git_url_commit_ids` are not temporary variables, this is a global state that gets potentially changed in a `verify` method that is supposed to be immutable/read-only; if there is a need in temporary variables, we can create two like this:\n\n    git_url_commit_id \u003d git_url_commit_ids.get(git_repo, get_commit_id(git_repo)) \n\nAnd similar for images, this can be done right before extending table_content outside of these two if statements.","commit_id":"6c230017982c8d1a7bb18679aec76a4e9d8d0ae1"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"f14be07573658af7b4a9e8134c7d79e51f5a49a5","unresolved":false,"context_lines":[{"line_number":401,"context_line":"        if not image_repo in image_repo_tags:"},{"line_number":402,"context_line":"            missing_references[image_repo] \u003d \\"},{"line_number":403,"context_line":"                image_repo + \" is not in image_repo_tags\""},{"line_number":404,"context_line":"            image_repo_tags[image_repo] \u003d get_image_tag(image_repo)"},{"line_number":405,"context_line":"        if not git_repo in git_url_commit_ids:"},{"line_number":406,"context_line":"            missing_references[git_repo] \u003d \\"},{"line_number":407,"context_line":"                git_repo + \" is not in git_url_commit_ids\""}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_d7dcc347","line":404,"range":{"start_line":404,"start_character":39,"end_line":404,"end_character":42},"in_reply_to":"9fb8cfa7_54b8d128","updated":"2019-06-21 19:22:18.000000000","message":"By the time `verify_references` method runs, `image_repo_tags` and `git_url_commit_ids` variables have served their need to help to update `versions_data_dict`.\n\n`verify references` method does not change the `versions_data_dict`, which stores data from `versions.yaml`.\n\nIt verifies references, and if needed, pulls missing references to compare to, and prints verification results.","commit_id":"6c230017982c8d1a7bb18679aec76a4e9d8d0ae1"},{"author":{"_account_id":8749,"name":"Evgeniy L","email":"eli@mirantis.com","username":"evgeniyl"},"change_message_id":"5e00674b7a726271f677f728d14293d93c82659e","unresolved":false,"context_lines":[{"line_number":401,"context_line":"        if not image_repo in image_repo_tags:"},{"line_number":402,"context_line":"            missing_references[image_repo] \u003d \\"},{"line_number":403,"context_line":"                image_repo + \" is not in image_repo_tags\""},{"line_number":404,"context_line":"            image_repo_tags[image_repo] \u003d get_image_tag(image_repo)"},{"line_number":405,"context_line":"        if not git_repo in git_url_commit_ids:"},{"line_number":406,"context_line":"            missing_references[git_repo] \u003d \\"},{"line_number":407,"context_line":"                git_repo + \" is not in git_url_commit_ids\""}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_f73d47dd","line":404,"range":{"start_line":404,"start_character":39,"end_line":404,"end_character":42},"in_reply_to":"9fb8cfa7_d7dcc347","updated":"2019-06-21 21:02:08.000000000","message":"Generally speaking it\u0027s not a good practice that any of those variables are globals, however considering they are at the moment, we should ensure that they are not changed in multiple places (or as less places as possible), otherwise it starts to loose any flow/structure and this makes it incredibly hard to read, understand and debug.\n\nAlso such methods as `verify`, `get`, `check` and etc, are not expected to have any side-effects, which is not the case here.","commit_id":"6c230017982c8d1a7bb18679aec76a4e9d8d0ae1"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"a1d87ba7b7c8adf8568a7671f91eb7c5ffd565d3","unresolved":false,"context_lines":[{"line_number":401,"context_line":"        if not image_repo in image_repo_tags:"},{"line_number":402,"context_line":"            missing_references[image_repo] \u003d \\"},{"line_number":403,"context_line":"                image_repo + \" is not in image_repo_tags\""},{"line_number":404,"context_line":"            image_repo_tags[image_repo] \u003d get_image_tag(image_repo)"},{"line_number":405,"context_line":"        if not git_repo in git_url_commit_ids:"},{"line_number":406,"context_line":"            missing_references[git_repo] \u003d \\"},{"line_number":407,"context_line":"                git_repo + \" is not in git_url_commit_ids\""}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_93946a8d","line":404,"range":{"start_line":404,"start_character":39,"end_line":404,"end_character":42},"in_reply_to":"9fb8cfa7_f73d47dd","updated":"2019-07-05 15:04:54.000000000","message":"Done","commit_id":"6c230017982c8d1a7bb18679aec76a4e9d8d0ae1"}]}
