)]}'
{"docker/base/sources.list.debian":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"dad250ff7f202cb8deb1f80c28061b3f09ed8b2a","unresolved":false,"context_lines":[{"line_number":5,"context_line":"deb http://security.debian.org/debian-security buster/updates main"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"# main docker repo"},{"line_number":8,"context_line":"deb https://download.docker.com/linux/debian buster stable"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"# Buster - Train repos"},{"line_number":11,"context_line":"deb http://buster-train.debian.net/debian buster-train-backports main"}],"source_content_type":"application/octet-stream","patch_set":18,"id":"3fa7e38b_31e19c9c","line":8,"range":{"start_line":8,"start_character":0,"end_line":8,"end_character":58},"updated":"2019-12-04 18:02:08.000000000","message":"I wonder why we need this in the image? zun? Should it be disabled by default? This could be a follow up. I don\u0027t see it for ubuntu.","commit_id":"cf11cd6f3d1f0f0d9e1bb948672be12171a4099b"},{"author":{"_account_id":24072,"name":"Marcin Juszkiewicz","email":"mjuszkiewicz@redhat.com","username":"hrw"},"change_message_id":"08755ec9de801196c9cc3b93d415f0420009bbd8","unresolved":false,"context_lines":[{"line_number":5,"context_line":"deb http://security.debian.org/debian-security buster/updates main"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"# main docker repo"},{"line_number":8,"context_line":"deb https://download.docker.com/linux/debian buster stable"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"# Buster - Train repos"},{"line_number":11,"context_line":"deb http://buster-train.debian.net/debian buster-train-backports main"}],"source_content_type":"application/octet-stream","patch_set":18,"id":"3fa7e38b_5796884b","line":8,"range":{"start_line":8,"start_character":0,"end_line":8,"end_character":58},"in_reply_to":"3fa7e38b_31e19c9c","updated":"2019-12-04 20:03:51.000000000","message":"fixed in https://review.opendev.org/697353","commit_id":"cf11cd6f3d1f0f0d9e1bb948672be12171a4099b"}],"docker/opendaylight/Dockerfile.j2":[{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"60303c066660fd18ed756bb3217fef87e75a9b73","unresolved":false,"context_lines":[{"line_number":16,"context_line":"        \u0027java-1.8.0-openjdk-headless\u0027,"},{"line_number":17,"context_line":"        \u0027opendaylight\u0027,"},{"line_number":18,"context_line":"    ] %}"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"{% elif base_package_type \u003d\u003d \u0027deb\u0027 %}"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    {% if base_distro \u003d\u003d \u0027debian\u0027 %}"}],"source_content_type":"text/x-jinja2","patch_set":17,"id":"3fa7e38b_0e428110","line":19,"updated":"2019-11-29 09:59:08.000000000","message":"must be the most important line in the whole change :-)","commit_id":"5160d6c09213d76e03d88e17d3f1806bc706c56a"},{"author":{"_account_id":24072,"name":"Marcin Juszkiewicz","email":"mjuszkiewicz@redhat.com","username":"hrw"},"change_message_id":"69b18ecc07bf87b47ae297455509d2cd781844ca","unresolved":false,"context_lines":[{"line_number":16,"context_line":"        \u0027java-1.8.0-openjdk-headless\u0027,"},{"line_number":17,"context_line":"        \u0027opendaylight\u0027,"},{"line_number":18,"context_line":"    ] %}"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"{% elif base_package_type \u003d\u003d \u0027deb\u0027 %}"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    {% if base_distro \u003d\u003d \u0027debian\u0027 %}"}],"source_content_type":"text/x-jinja2","patch_set":17,"id":"3fa7e38b_ce1a2917","line":19,"in_reply_to":"3fa7e38b_0e428110","updated":"2019-11-29 10:04:27.000000000","message":"Done","commit_id":"5160d6c09213d76e03d88e17d3f1806bc706c56a"}],"kolla/template/methods.py":[{"author":{"_account_id":24072,"name":"Marcin Juszkiewicz","email":"mjuszkiewicz@redhat.com","username":"hrw"},"change_message_id":"4535caf404c0e43ec3a9a73990f19242f50fd660","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    return \u0027 \u0026\u0026 \u0027.join(cmds)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"def enable_repos(reponames, base_package_type, base_distro, base_arch):"},{"line_number":73,"context_line":"    \"\"\"NOTE(hrw): we need to handle CentOS, Debian and Ubuntu with one macro."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    Repo names have to be simple names mapped to proper ones.  So \u0027ceph\u0027 \u003d\u003d"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_e7fd15b2","line":72,"range":{"start_line":72,"start_character":0,"end_line":72,"end_character":71},"updated":"2019-11-23 09:30:53.000000000","message":"There have to be a better way of giving variables from template...\n\nI need distro version too - to handle yum/dnf...","commit_id":"e8f79b9e78f4588ff0085c9a8da81a8d27d7872e"},{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"60303c066660fd18ed756bb3217fef87e75a9b73","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"@contextfunction"},{"line_number":76,"context_line":"def enable_repos(context, reponames):"},{"line_number":77,"context_line":"    \"\"\"NOTE(hrw): we need to handle CentOS, Debian and Ubuntu with one macro."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    Repo names have to be simple names mapped to proper ones.  So \u0027ceph\u0027 \u003d\u003d"}],"source_content_type":"text/x-python","patch_set":17,"id":"3fa7e38b_8eb8b111","line":76,"updated":"2019-11-29 09:59:08.000000000","message":"unit tests","commit_id":"5160d6c09213d76e03d88e17d3f1806bc706c56a"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"dad250ff7f202cb8deb1f80c28061b3f09ed8b2a","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    # TODO(hrw): add checks for isinstance() and raise proper exception"},{"line_number":90,"context_line":"    base_package_type \u003d context.get(\u0027base_package_type\u0027)"},{"line_number":91,"context_line":"    if isinstance(base_package_type, Undefined):"},{"line_number":92,"context_line":"        raise"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    base_distro \u003d context.get(\u0027base_distro\u0027)"},{"line_number":95,"context_line":"    base_arch \u003d context.get(\u0027base_arch\u0027)"}],"source_content_type":"text/x-python","patch_set":18,"id":"3fa7e38b_312bdc95","line":92,"range":{"start_line":92,"start_character":8,"end_line":92,"end_character":13},"updated":"2019-12-04 18:02:08.000000000","message":"I don\u0027t think a bare raise works outside an exception handler.","commit_id":"cf11cd6f3d1f0f0d9e1bb948672be12171a4099b"},{"author":{"_account_id":24072,"name":"Marcin Juszkiewicz","email":"mjuszkiewicz@redhat.com","username":"hrw"},"change_message_id":"08755ec9de801196c9cc3b93d415f0420009bbd8","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    # TODO(hrw): add checks for isinstance() and raise proper exception"},{"line_number":90,"context_line":"    base_package_type \u003d context.get(\u0027base_package_type\u0027)"},{"line_number":91,"context_line":"    if isinstance(base_package_type, Undefined):"},{"line_number":92,"context_line":"        raise"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    base_distro \u003d context.get(\u0027base_distro\u0027)"},{"line_number":95,"context_line":"    base_arch \u003d context.get(\u0027base_arch\u0027)"}],"source_content_type":"text/x-python","patch_set":18,"id":"3fa7e38b_b79b3c15","line":92,"range":{"start_line":92,"start_character":8,"end_line":92,"end_character":13},"in_reply_to":"3fa7e38b_312bdc95","updated":"2019-12-04 20:03:51.000000000","message":"fixed in https://review.opendev.org/697354","commit_id":"cf11cd6f3d1f0f0d9e1bb948672be12171a4099b"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"dad250ff7f202cb8deb1f80c28061b3f09ed8b2a","unresolved":false,"context_lines":[{"line_number":100,"context_line":"    if base_package_type \u003d\u003d \u0027rpm\u0027:"},{"line_number":101,"context_line":"        # NOTE(hrw): we enable all repos with one call"},{"line_number":102,"context_line":"        if distro_package_manager \u003d\u003d \u0027yum\u0027:"},{"line_number":103,"context_line":"            commands \u003d \u0027yum-config-manager \u0027"},{"line_number":104,"context_line":"        elif distro_package_manager \u003d\u003d \u0027dnf\u0027:"},{"line_number":105,"context_line":"            commands \u003d \u0027dnf config-manager \u0027"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"3fa7e38b_3c6093cf","line":103,"range":{"start_line":103,"start_character":24,"end_line":103,"end_character":42},"updated":"2019-12-04 18:02:08.000000000","message":"I checked, and this adds 1.8MB each time. I think we can live with that.","commit_id":"cf11cd6f3d1f0f0d9e1bb948672be12171a4099b"},{"author":{"_account_id":24072,"name":"Marcin Juszkiewicz","email":"mjuszkiewicz@redhat.com","username":"hrw"},"change_message_id":"08755ec9de801196c9cc3b93d415f0420009bbd8","unresolved":false,"context_lines":[{"line_number":100,"context_line":"    if base_package_type \u003d\u003d \u0027rpm\u0027:"},{"line_number":101,"context_line":"        # NOTE(hrw): we enable all repos with one call"},{"line_number":102,"context_line":"        if distro_package_manager \u003d\u003d \u0027yum\u0027:"},{"line_number":103,"context_line":"            commands \u003d \u0027yum-config-manager \u0027"},{"line_number":104,"context_line":"        elif distro_package_manager \u003d\u003d \u0027dnf\u0027:"},{"line_number":105,"context_line":"            commands \u003d \u0027dnf config-manager \u0027"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"3fa7e38b_178a5019","line":103,"range":{"start_line":103,"start_character":24,"end_line":103,"end_character":42},"in_reply_to":"3fa7e38b_3c6093cf","updated":"2019-12-04 20:03:51.000000000","message":"This is the official way of enabling/disabling repositories in RHEL7 world.\n\nAnd \u0027dnf config-manager\u0027 in RHEL8 one.","commit_id":"cf11cd6f3d1f0f0d9e1bb948672be12171a4099b"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"dad250ff7f202cb8deb1f80c28061b3f09ed8b2a","unresolved":false,"context_lines":[{"line_number":119,"context_line":"                commands +\u003d \u0027\u003e/etc/apt/sources.list.d/%s.list; \u0027 % repo"},{"line_number":120,"context_line":"        except KeyError:"},{"line_number":121,"context_line":"            pass"},{"line_number":122,"context_line":"        # NOTE(hrw): tripleo builds have empty repolist"},{"line_number":123,"context_line":"        except TypeError:"},{"line_number":124,"context_line":"            pass"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"3fa7e38b_1cffd700","line":122,"range":{"start_line":122,"start_character":47,"end_line":122,"end_character":55},"updated":"2019-12-04 18:02:08.000000000","message":"How do they do this? Modifying repos.yaml?","commit_id":"cf11cd6f3d1f0f0d9e1bb948672be12171a4099b"},{"author":{"_account_id":24072,"name":"Marcin Juszkiewicz","email":"mjuszkiewicz@redhat.com","username":"hrw"},"change_message_id":"08755ec9de801196c9cc3b93d415f0420009bbd8","unresolved":false,"context_lines":[{"line_number":119,"context_line":"                commands +\u003d \u0027\u003e/etc/apt/sources.list.d/%s.list; \u0027 % repo"},{"line_number":120,"context_line":"        except KeyError:"},{"line_number":121,"context_line":"            pass"},{"line_number":122,"context_line":"        # NOTE(hrw): tripleo builds have empty repolist"},{"line_number":123,"context_line":"        except TypeError:"},{"line_number":124,"context_line":"            pass"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"3fa7e38b_976e40fc","line":122,"range":{"start_line":122,"start_character":47,"end_line":122,"end_character":55},"in_reply_to":"3fa7e38b_1cffd700","updated":"2019-12-04 20:03:51.000000000","message":"They drop all external repos from base image.","commit_id":"cf11cd6f3d1f0f0d9e1bb948672be12171a4099b"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"f1b99d83e7452eb40e0994025544395e4a6544ec","unresolved":false,"context_lines":[{"line_number":119,"context_line":"                commands +\u003d \u0027\u003e/etc/apt/sources.list.d/%s.list; \u0027 % repo"},{"line_number":120,"context_line":"        except KeyError:"},{"line_number":121,"context_line":"            pass"},{"line_number":122,"context_line":"        # NOTE(hrw): tripleo builds have empty repolist"},{"line_number":123,"context_line":"        except TypeError:"},{"line_number":124,"context_line":"            pass"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"3fa7e38b_7445b814","line":122,"range":{"start_line":122,"start_character":47,"end_line":122,"end_character":55},"in_reply_to":"3fa7e38b_976e40fc","updated":"2019-12-05 10:13:02.000000000","message":"It looks like this works for tripleo because yum-config-manager ignores errors:\n\nyum-config-manager --enable foo\necho $?\n0","commit_id":"cf11cd6f3d1f0f0d9e1bb948672be12171a4099b"}],"kolla/tests/test_methods.py":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"dad250ff7f202cb8deb1f80c28061b3f09ed8b2a","unresolved":false,"context_lines":[{"line_number":22,"context_line":"        expectCmd \u003d \u0027apt-get -y install --no-install-recommends package2.deb\u0027"},{"line_number":23,"context_line":"        self.assertEqual(expectCmd, result.split(\"\u0026\u0026\")[1].strip())"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def test_enable_repos(self):"},{"line_number":26,"context_line":"        template_vars \u003d {"},{"line_number":27,"context_line":"            \u0027base_arch\u0027: \u0027x86_64\u0027,"},{"line_number":28,"context_line":"            \u0027base_distro\u0027: \u0027centos\u0027,"},{"line_number":29,"context_line":"            \u0027base_package_type\u0027: \u0027rpm\u0027,"},{"line_number":30,"context_line":"            \u0027distro_package_manager\u0027: \u0027yum\u0027"},{"line_number":31,"context_line":"        }"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        result \u003d methods.enable_repos(template_vars, [\u0027grafana\u0027])"},{"line_number":34,"context_line":"        expectCmd \u003d \u0027RUN yum-config-manager  --enable grafana\u0027"},{"line_number":35,"context_line":"        self.assertEqual(expectCmd, result)"}],"source_content_type":"text/x-python","patch_set":18,"id":"3fa7e38b_717394e9","line":35,"range":{"start_line":25,"start_character":0,"end_line":35,"end_character":43},"updated":"2019-12-04 18:02:08.000000000","message":"Would be nice to exercise more branches of that method.","commit_id":"cf11cd6f3d1f0f0d9e1bb948672be12171a4099b"},{"author":{"_account_id":24072,"name":"Marcin Juszkiewicz","email":"mjuszkiewicz@redhat.com","username":"hrw"},"change_message_id":"08755ec9de801196c9cc3b93d415f0420009bbd8","unresolved":false,"context_lines":[{"line_number":22,"context_line":"        expectCmd \u003d \u0027apt-get -y install --no-install-recommends package2.deb\u0027"},{"line_number":23,"context_line":"        self.assertEqual(expectCmd, result.split(\"\u0026\u0026\")[1].strip())"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def test_enable_repos(self):"},{"line_number":26,"context_line":"        template_vars \u003d {"},{"line_number":27,"context_line":"            \u0027base_arch\u0027: \u0027x86_64\u0027,"},{"line_number":28,"context_line":"            \u0027base_distro\u0027: \u0027centos\u0027,"},{"line_number":29,"context_line":"            \u0027base_package_type\u0027: \u0027rpm\u0027,"},{"line_number":30,"context_line":"            \u0027distro_package_manager\u0027: \u0027yum\u0027"},{"line_number":31,"context_line":"        }"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        result \u003d methods.enable_repos(template_vars, [\u0027grafana\u0027])"},{"line_number":34,"context_line":"        expectCmd \u003d \u0027RUN yum-config-manager  --enable grafana\u0027"},{"line_number":35,"context_line":"        self.assertEqual(expectCmd, result)"}],"source_content_type":"text/x-python","patch_set":18,"id":"3fa7e38b_97f16099","line":35,"range":{"start_line":25,"start_character":0,"end_line":35,"end_character":43},"in_reply_to":"3fa7e38b_717394e9","updated":"2019-12-04 20:03:51.000000000","message":"fixed in https://review.opendev.org/697354","commit_id":"cf11cd6f3d1f0f0d9e1bb948672be12171a4099b"}],"releasenotes/notes/enable-repos-when-needed-3beac8e1e24ea8eb.yaml":[{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"60303c066660fd18ed756bb3217fef87e75a9b73","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    A way of handling external repositories has changed. All such repos are now"},{"line_number":5,"context_line":"    disabled by default. There is \"enable_extra_repos\" macro to enable them by"},{"line_number":6,"context_line":"    name. Repositories names are defined in the \"etc/repos.yaml\" file."}],"source_content_type":"text/x-yaml","patch_set":17,"id":"3fa7e38b_8e4d113d","line":4,"range":{"start_line":4,"start_character":4,"end_line":4,"end_character":5},"updated":"2019-11-29 09:59:08.000000000","message":"nit: The","commit_id":"5160d6c09213d76e03d88e17d3f1806bc706c56a"},{"author":{"_account_id":24072,"name":"Marcin Juszkiewicz","email":"mjuszkiewicz@redhat.com","username":"hrw"},"change_message_id":"69b18ecc07bf87b47ae297455509d2cd781844ca","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    A way of handling external repositories has changed. All such repos are now"},{"line_number":5,"context_line":"    disabled by default. There is \"enable_extra_repos\" macro to enable them by"},{"line_number":6,"context_line":"    name. Repositories names are defined in the \"etc/repos.yaml\" file."}],"source_content_type":"text/x-yaml","patch_set":17,"id":"3fa7e38b_ae1d6d11","line":4,"range":{"start_line":4,"start_character":4,"end_line":4,"end_character":5},"in_reply_to":"3fa7e38b_8e4d113d","updated":"2019-11-29 10:04:27.000000000","message":"Done","commit_id":"5160d6c09213d76e03d88e17d3f1806bc706c56a"},{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"60303c066660fd18ed756bb3217fef87e75a9b73","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"3fa7e38b_2e5c1def","line":7,"updated":"2019-11-29 09:59:08.000000000","message":"and this is a good note","commit_id":"5160d6c09213d76e03d88e17d3f1806bc706c56a"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"dad250ff7f202cb8deb1f80c28061b3f09ed8b2a","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The way of handling external repositories has changed. All such repos are"},{"line_number":5,"context_line":"    now disabled by default. There is \"enable_extra_repos\" macro to enable them"},{"line_number":6,"context_line":"    by name. Repositories names are defined in the \"etc/repos.yaml\" file."}],"source_content_type":"text/x-yaml","patch_set":18,"id":"3fa7e38b_5c2d4f8d","line":6,"range":{"start_line":6,"start_character":52,"end_line":6,"end_character":55},"updated":"2019-12-04 18:02:08.000000000","message":"Is it in etc?","commit_id":"cf11cd6f3d1f0f0d9e1bb948672be12171a4099b"},{"author":{"_account_id":24072,"name":"Marcin Juszkiewicz","email":"mjuszkiewicz@redhat.com","username":"hrw"},"change_message_id":"08755ec9de801196c9cc3b93d415f0420009bbd8","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The way of handling external repositories has changed. All such repos are"},{"line_number":5,"context_line":"    now disabled by default. There is \"enable_extra_repos\" macro to enable them"},{"line_number":6,"context_line":"    by name. Repositories names are defined in the \"etc/repos.yaml\" file."}],"source_content_type":"text/x-yaml","patch_set":18,"id":"3fa7e38b_b7249c61","line":6,"range":{"start_line":6,"start_character":52,"end_line":6,"end_character":55},"in_reply_to":"3fa7e38b_5c2d4f8d","updated":"2019-12-04 20:03:51.000000000","message":"fix in https://review.opendev.org/697351","commit_id":"cf11cd6f3d1f0f0d9e1bb948672be12171a4099b"}]}
