)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"878e00d386a032c9e03dce15cc5e35981fe8acfd","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add LetsEncrypt images for cert request/renewal"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add a container for LetsEncrypt certbot and Apache certbot plugin"},{"line_number":10,"context_line":"binaries, used to create and re-new LetsEncrypt SSL certificates."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Implements: blueprint letsencrypt-https"},{"line_number":13,"context_line":"Change-Id: I36d1a367fd8f40bb93ebc49122c8ee4fdcc151b2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"ddf43a1a_3220ca5a","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":65},"updated":"2021-01-27 14:21:41.000000000","message":"Needs updating.","commit_id":"457761c7e5734d6524b09bf933122f6a16a16b93"},{"author":{"_account_id":30810,"name":"James Kirsch","email":"generalfuzz@gmail.com","username":"generalfuzz"},"change_message_id":"321eab16f6360b2b18d3b3c7783ed5972ae57a2b","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add LetsEncrypt images for cert request/renewal"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add a container for LetsEncrypt certbot and Apache certbot plugin"},{"line_number":10,"context_line":"binaries, used to create and re-new LetsEncrypt SSL certificates."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Implements: blueprint letsencrypt-https"},{"line_number":13,"context_line":"Change-Id: I36d1a367fd8f40bb93ebc49122c8ee4fdcc151b2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"6411cb6c_7ad0399c","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":65},"in_reply_to":"ddf43a1a_3220ca5a","updated":"2021-03-21 00:11:51.000000000","message":"Done","commit_id":"457761c7e5734d6524b09bf933122f6a16a16b93"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":24072,"name":"Marcin Juszkiewicz","email":"mjuszkiewicz@redhat.com","username":"hrw"},"change_message_id":"7a52316885d0f1631845467ea0f396b63f19228d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":31,"id":"c5d8c21f_11f176f5","updated":"2022-01-20 12:38:48.000000000","message":"My question was \"why not install httpd in letsencrypt-base then and base on base image\" but I think that it can be refactored later.\n\nI have an idea of httpd image as parent for both letsencrypt-base and openstack-base.\n\n","commit_id":"f7a2228f8a938b040866a8413a303d1e07211ff9"}],"docker/haproxy/Dockerfile.j2":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"878e00d386a032c9e03dce15cc5e35981fe8acfd","unresolved":true,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"{% if base_package_type \u003d\u003d \u0027rpm\u0027 %}"},{"line_number":13,"context_line":"    {% set haproxy_packages \u003d ["},{"line_number":14,"context_line":"        \u0027haproxy\u0027,"},{"line_number":15,"context_line":"        \u0027cronie\u0027,"},{"line_number":16,"context_line":"        \u0027rsync\u0027"},{"line_number":17,"context_line":"    ] %}"},{"line_number":18,"context_line":"{% elif base_package_type \u003d\u003d \u0027deb\u0027 %}"},{"line_number":19,"context_line":"    {% set haproxy_packages \u003d ["}],"source_content_type":"text/x-jinja2","patch_set":12,"id":"2ff32a9f_f8634ddd","line":16,"range":{"start_line":14,"start_character":0,"end_line":16,"end_character":15},"updated":"2021-01-27 14:21:41.000000000","message":"nit: alphabetise","commit_id":"457761c7e5734d6524b09bf933122f6a16a16b93"},{"author":{"_account_id":30810,"name":"James Kirsch","email":"generalfuzz@gmail.com","username":"generalfuzz"},"change_message_id":"321eab16f6360b2b18d3b3c7783ed5972ae57a2b","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"{% if base_package_type \u003d\u003d \u0027rpm\u0027 %}"},{"line_number":13,"context_line":"    {% set haproxy_packages \u003d ["},{"line_number":14,"context_line":"        \u0027haproxy\u0027,"},{"line_number":15,"context_line":"        \u0027cronie\u0027,"},{"line_number":16,"context_line":"        \u0027rsync\u0027"},{"line_number":17,"context_line":"    ] %}"},{"line_number":18,"context_line":"{% elif base_package_type \u003d\u003d \u0027deb\u0027 %}"},{"line_number":19,"context_line":"    {% set haproxy_packages \u003d ["}],"source_content_type":"text/x-jinja2","patch_set":12,"id":"f50b0e50_2467a794","line":16,"range":{"start_line":14,"start_character":0,"end_line":16,"end_character":15},"in_reply_to":"2ff32a9f_f8634ddd","updated":"2021-03-21 00:11:51.000000000","message":"Done","commit_id":"457761c7e5734d6524b09bf933122f6a16a16b93"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"878e00d386a032c9e03dce15cc5e35981fe8acfd","unresolved":true,"context_lines":[{"line_number":17,"context_line":"    ] %}"},{"line_number":18,"context_line":"{% elif base_package_type \u003d\u003d \u0027deb\u0027 %}"},{"line_number":19,"context_line":"    {% set haproxy_packages \u003d ["},{"line_number":20,"context_line":"        \u0027haproxy\u0027,"},{"line_number":21,"context_line":"        \u0027cron\u0027,"},{"line_number":22,"context_line":"        \u0027rsync\u0027"},{"line_number":23,"context_line":"    ] %}"},{"line_number":24,"context_line":"{% endif %}"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-jinja2","patch_set":12,"id":"e1c15f58_269a8c94","line":22,"range":{"start_line":20,"start_character":0,"end_line":22,"end_character":15},"updated":"2021-01-27 14:21:41.000000000","message":"ditto","commit_id":"457761c7e5734d6524b09bf933122f6a16a16b93"},{"author":{"_account_id":30810,"name":"James Kirsch","email":"generalfuzz@gmail.com","username":"generalfuzz"},"change_message_id":"321eab16f6360b2b18d3b3c7783ed5972ae57a2b","unresolved":false,"context_lines":[{"line_number":17,"context_line":"    ] %}"},{"line_number":18,"context_line":"{% elif base_package_type \u003d\u003d \u0027deb\u0027 %}"},{"line_number":19,"context_line":"    {% set haproxy_packages \u003d ["},{"line_number":20,"context_line":"        \u0027haproxy\u0027,"},{"line_number":21,"context_line":"        \u0027cron\u0027,"},{"line_number":22,"context_line":"        \u0027rsync\u0027"},{"line_number":23,"context_line":"    ] %}"},{"line_number":24,"context_line":"{% endif %}"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-jinja2","patch_set":12,"id":"a67a698f_5fa75da1","line":22,"range":{"start_line":20,"start_character":0,"end_line":22,"end_character":15},"in_reply_to":"e1c15f58_269a8c94","updated":"2021-03-21 00:11:51.000000000","message":"Done","commit_id":"457761c7e5734d6524b09bf933122f6a16a16b93"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"f48d84025d13cd3cf1dc5f26583cf4dea7d2e913","unresolved":true,"context_lines":[{"line_number":7,"context_line":""},{"line_number":8,"context_line":"{% import \"macros.j2\" as macros with context %}"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"{# NOTE(jkirsch): EPEL required for supervisor #}"},{"line_number":11,"context_line":"{{ macros.enable_extra_repos([\u0027epel\u0027]) }}"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"{{ macros.enable_extra_repos([\u0027haproxy\u0027]) }}"}],"source_content_type":"text/x-jinja2","patch_set":31,"id":"76e14c3a_2cad272b","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":49},"updated":"2022-01-20 19:13:19.000000000","message":"do we still need the supervisor after haproxy upgrade?","commit_id":"f7a2228f8a938b040866a8413a303d1e07211ff9"},{"author":{"_account_id":30810,"name":"James Kirsch","email":"generalfuzz@gmail.com","username":"generalfuzz"},"change_message_id":"aba1839eb60a402ed23f391ba4106c0838badabd","unresolved":false,"context_lines":[{"line_number":7,"context_line":""},{"line_number":8,"context_line":"{% import \"macros.j2\" as macros with context %}"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"{# NOTE(jkirsch): EPEL required for supervisor #}"},{"line_number":11,"context_line":"{{ macros.enable_extra_repos([\u0027epel\u0027]) }}"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"{{ macros.enable_extra_repos([\u0027haproxy\u0027]) }}"}],"source_content_type":"text/x-jinja2","patch_set":31,"id":"af90fa85_1fa859cd","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":49},"in_reply_to":"76e14c3a_2cad272b","updated":"2022-02-03 03:53:13.000000000","message":"Done","commit_id":"f7a2228f8a938b040866a8413a303d1e07211ff9"}],"docker/letsencrypt/Dockerfile.j2":[{"author":{"_account_id":27339,"name":"Michal Arbet","email":"michal.arbet@ultimum.io","username":"michalarbet"},"change_message_id":"09481ea294102276b5159af6f165e362cde37bbb","unresolved":true,"context_lines":[{"line_number":1,"context_line":"FROM {{ namespace }}/{{ image_prefix }}openstack-base:{{ tag }}"},{"line_number":2,"context_line":"LABEL maintainer\u003d\"{{ maintainer }}\" name\u003d\"{{ image_name }}\""},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"{% block letsencrypt_header %}{% endblock %}"}],"source_content_type":"text/x-jinja2","patch_set":35,"id":"ee579773_bbf9e5cf","line":1,"range":{"start_line":1,"start_character":24,"end_line":1,"end_character":36},"updated":"2022-02-15 15:18:18.000000000","message":"If base is enough, this should be infra_image_prefix, shouldn\u0027t be ?","commit_id":"68f5856728977d3b4253caf1d5859b5e2a502299"},{"author":{"_account_id":27339,"name":"Michal Arbet","email":"michal.arbet@ultimum.io","username":"michalarbet"},"change_message_id":"5d360ee039a163d3f46dbbfe9ed41081b2d8389f","unresolved":true,"context_lines":[{"line_number":1,"context_line":"FROM {{ namespace }}/{{ image_prefix }}openstack-base:{{ tag }}"},{"line_number":2,"context_line":"LABEL maintainer\u003d\"{{ maintainer }}\" name\u003d\"{{ image_name }}\""},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"{% block letsencrypt_header %}{% endblock %}"}],"source_content_type":"text/x-jinja2","patch_set":35,"id":"22752892_56692b2f","line":1,"range":{"start_line":1,"start_character":39,"end_line":1,"end_character":53},"updated":"2022-02-15 15:16:22.000000000","message":"does it need to be really openstack-base ? I don\u0027t think, openstack-base has a lot of extra packages than base image, and it\u0027s used for openstack services. I think base should be enough.","commit_id":"68f5856728977d3b4253caf1d5859b5e2a502299"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"c0ebabb7eab34f0d493111ec547b72f0733950c5","unresolved":true,"context_lines":[{"line_number":1,"context_line":"FROM {{ namespace }}/{{ image_prefix }}openstack-base:{{ tag }}"},{"line_number":2,"context_line":"LABEL maintainer\u003d\"{{ maintainer }}\" name\u003d\"{{ image_name }}\""},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"{% block letsencrypt_header %}{% endblock %}"}],"source_content_type":"text/x-jinja2","patch_set":35,"id":"854f97c3_6130f234","line":1,"range":{"start_line":1,"start_character":39,"end_line":1,"end_character":53},"in_reply_to":"22752892_56692b2f","updated":"2022-02-15 15:58:16.000000000","message":"It\u0027s because we put httpd into openstack-base","commit_id":"68f5856728977d3b4253caf1d5859b5e2a502299"},{"author":{"_account_id":27339,"name":"Michal Arbet","email":"michal.arbet@ultimum.io","username":"michalarbet"},"change_message_id":"5ce246ecfa59c65b9cbd7c5afed605eefe138c8a","unresolved":true,"context_lines":[{"line_number":1,"context_line":"FROM {{ namespace }}/{{ image_prefix }}openstack-base:{{ tag }}"},{"line_number":2,"context_line":"LABEL maintainer\u003d\"{{ maintainer }}\" name\u003d\"{{ image_name }}\""},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"{% block letsencrypt_header %}{% endblock %}"}],"source_content_type":"text/x-jinja2","patch_set":35,"id":"69e90731_0cac84a3","line":1,"range":{"start_line":1,"start_character":39,"end_line":1,"end_character":53},"in_reply_to":"854f97c3_6130f234","updated":"2022-02-15 16:05:46.000000000","message":"Ah, ok - good point.\nI\u0027ve seen /usr/local/bin/kolla_httpd_setup used in script, so i checked this file and it\u0027s copied in base. \n\nSo I thought that installation of httpd it is in same image, now i see that httpd package is installed in openstack-base.","commit_id":"68f5856728977d3b4253caf1d5859b5e2a502299"}],"docker/letsencrypt/letsencrypt-acme/extend_start.sh":[{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"0d108663e8b91228fb98bdc82a4d316b070b287b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/bin/bash"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"LETSENCRYPT_LOG_DIR\u003d\"/var/log/kolla/letsencrypt\""},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"if [[ ! -d \"${LETSENCRYPT_LOG_DIR}\" ]]; then"},{"line_number":6,"context_line":"    mkdir -p \"${LETSENCRYPT_LOG_DIR}\""},{"line_number":7,"context_line":"fi"},{"line_number":8,"context_line":"if [[ $(stat -c %U:%G \"${LETSENCRYPT_LOG_DIR}\") !\u003d \"letsencrypt:kolla\" ]]; then"},{"line_number":9,"context_line":"    chown letsencrypt:kolla \"${LETSENCRYPT_LOG_DIR}\""},{"line_number":10,"context_line":"fi"}],"source_content_type":"text/x-sh","patch_set":3,"id":"9f560f44_9b8a74bc","line":10,"range":{"start_line":3,"start_character":0,"end_line":10,"end_character":2},"updated":"2020-08-04 11:10:50.000000000","message":"do we really need to do it here, instead of just adding that to config.json in kolla-ansible?","commit_id":"ee0222c46958ee14fb924e657e64d0a74b5b5da1"},{"author":{"_account_id":29100,"name":"Jason Anderson","email":"jasonanderson@uchicago.edu","username":"jasonanderson"},"change_message_id":"8dfab5118942807e693ba5d35897d4b2a24828cd","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/bin/bash"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"LETSENCRYPT_LOG_DIR\u003d\"/var/log/kolla/letsencrypt\""},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"if [[ ! -d \"${LETSENCRYPT_LOG_DIR}\" ]]; then"},{"line_number":6,"context_line":"    mkdir -p \"${LETSENCRYPT_LOG_DIR}\""},{"line_number":7,"context_line":"fi"},{"line_number":8,"context_line":"if [[ $(stat -c %U:%G \"${LETSENCRYPT_LOG_DIR}\") !\u003d \"letsencrypt:kolla\" ]]; then"},{"line_number":9,"context_line":"    chown letsencrypt:kolla \"${LETSENCRYPT_LOG_DIR}\""},{"line_number":10,"context_line":"fi"}],"source_content_type":"text/x-sh","patch_set":3,"id":"1f621f24_4adbf17a","line":10,"range":{"start_line":3,"start_character":0,"end_line":10,"end_character":2},"in_reply_to":"9f560f44_9b8a74bc","updated":"2020-11-09 16:52:50.000000000","message":"Many (all?) of the other services do this, and I followed suit. Perhaps it\u0027s cargo-culted, but maybe somebody knows a reason why the config.json solution isn\u0027t sufficient (maybe it prevents errors on startup from being logged to the right place?)","commit_id":"ee0222c46958ee14fb924e657e64d0a74b5b5da1"}],"docker/letsencrypt/letsencrypt-base/Dockerfile.j2":[{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"0d108663e8b91228fb98bdc82a4d316b070b287b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"FROM {{ namespace }}/{{ image_prefix }}base:{{ tag }}"},{"line_number":2,"context_line":"LABEL maintainer\u003d\"{{ maintainer }}\" name\u003d\"{{ image_name }}\""},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"{% block letsencrypt_acme_header %}{% endblock %}"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"{% block letsencrypt_acme_footer %}{% endblock %}"}],"source_content_type":"text/x-jinja2","patch_set":3,"id":"9f560f44_1bc024e1","line":6,"range":{"start_line":4,"start_character":0,"end_line":6,"end_character":49},"updated":"2020-08-04 11:10:50.000000000","message":"why we need a clone of base docker image? can\u0027t we just have base as parent for those two new images? Not mentioning it should be letsencrypt_base_header/footer","commit_id":"ee0222c46958ee14fb924e657e64d0a74b5b5da1"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"878e00d386a032c9e03dce15cc5e35981fe8acfd","unresolved":true,"context_lines":[{"line_number":1,"context_line":"FROM {{ namespace }}/{{ image_prefix }}openstack-base:{{ tag }}"},{"line_number":2,"context_line":"LABEL maintainer\u003d\"{{ maintainer }}\" name\u003d\"{{ image_name }}\""},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"{% block letsencrypt_base_header %}{% endblock %}"}],"source_content_type":"text/x-jinja2","patch_set":12,"id":"b7b203a4_bab2202b","line":1,"range":{"start_line":1,"start_character":39,"end_line":1,"end_character":53},"updated":"2021-01-27 14:21:41.000000000","message":"Does this need to use openstack-base, or could it use base?","commit_id":"457761c7e5734d6524b09bf933122f6a16a16b93"},{"author":{"_account_id":30810,"name":"James Kirsch","email":"generalfuzz@gmail.com","username":"generalfuzz"},"change_message_id":"321eab16f6360b2b18d3b3c7783ed5972ae57a2b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"FROM {{ namespace }}/{{ image_prefix }}openstack-base:{{ tag }}"},{"line_number":2,"context_line":"LABEL maintainer\u003d\"{{ maintainer }}\" name\u003d\"{{ image_name }}\""},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"{% block letsencrypt_base_header %}{% endblock %}"}],"source_content_type":"text/x-jinja2","patch_set":12,"id":"deb6192b_ca193360","line":1,"range":{"start_line":1,"start_character":39,"end_line":1,"end_character":53},"in_reply_to":"b7b203a4_bab2202b","updated":"2021-03-21 00:11:51.000000000","message":"requires openstack-base since letsencrypt uses httpd for acme server","commit_id":"457761c7e5734d6524b09bf933122f6a16a16b93"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"878e00d386a032c9e03dce15cc5e35981fe8acfd","unresolved":true,"context_lines":[{"line_number":6,"context_line":"{% import \"macros.j2\" as macros with context %}"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"{% if base_package_type \u003d\u003d \u0027rpm\u0027 %}"},{"line_number":9,"context_line":"    {% set letsencrypt_fernet_packages \u003d ["},{"line_number":10,"context_line":"        \u0027openssh-clients\u0027,"},{"line_number":11,"context_line":"        \u0027rsync\u0027"},{"line_number":12,"context_line":"    ] %}"}],"source_content_type":"text/x-jinja2","patch_set":12,"id":"2ed1a3f6_e610600d","line":9,"range":{"start_line":9,"start_character":23,"end_line":9,"end_character":29},"updated":"2021-01-27 14:21:41.000000000","message":"base","commit_id":"457761c7e5734d6524b09bf933122f6a16a16b93"},{"author":{"_account_id":30810,"name":"James Kirsch","email":"generalfuzz@gmail.com","username":"generalfuzz"},"change_message_id":"321eab16f6360b2b18d3b3c7783ed5972ae57a2b","unresolved":false,"context_lines":[{"line_number":6,"context_line":"{% import \"macros.j2\" as macros with context %}"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"{% if base_package_type \u003d\u003d \u0027rpm\u0027 %}"},{"line_number":9,"context_line":"    {% set letsencrypt_fernet_packages \u003d ["},{"line_number":10,"context_line":"        \u0027openssh-clients\u0027,"},{"line_number":11,"context_line":"        \u0027rsync\u0027"},{"line_number":12,"context_line":"    ] %}"}],"source_content_type":"text/x-jinja2","patch_set":12,"id":"a6e4421f_075137f5","line":9,"range":{"start_line":9,"start_character":23,"end_line":9,"end_character":29},"in_reply_to":"2ed1a3f6_e610600d","updated":"2021-03-21 00:11:51.000000000","message":"Done","commit_id":"457761c7e5734d6524b09bf933122f6a16a16b93"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"878e00d386a032c9e03dce15cc5e35981fe8acfd","unresolved":true,"context_lines":[{"line_number":19,"context_line":"{{ macros.install_packages(letsencrypt_fernet_packages | customizable(\"packages\")) }}"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"{% block letsencrypt_base_footer %}{% endblock %}"},{"line_number":22,"context_line":"{% block footer %}{% endblock %}"}],"source_content_type":"text/x-jinja2","patch_set":12,"id":"f0a7961d_4628d0f4","line":22,"range":{"start_line":22,"start_character":0,"end_line":22,"end_character":32},"updated":"2021-01-27 14:21:41.000000000","message":"Not a leaf image - no footer required.","commit_id":"457761c7e5734d6524b09bf933122f6a16a16b93"},{"author":{"_account_id":30810,"name":"James Kirsch","email":"generalfuzz@gmail.com","username":"generalfuzz"},"change_message_id":"321eab16f6360b2b18d3b3c7783ed5972ae57a2b","unresolved":false,"context_lines":[{"line_number":19,"context_line":"{{ macros.install_packages(letsencrypt_fernet_packages | customizable(\"packages\")) }}"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"{% block letsencrypt_base_footer %}{% endblock %}"},{"line_number":22,"context_line":"{% block footer %}{% endblock %}"}],"source_content_type":"text/x-jinja2","patch_set":12,"id":"4a0675d0_05784187","line":22,"range":{"start_line":22,"start_character":0,"end_line":22,"end_character":32},"in_reply_to":"f0a7961d_4628d0f4","updated":"2021-03-21 00:11:51.000000000","message":"Done","commit_id":"457761c7e5734d6524b09bf933122f6a16a16b93"}],"docker/letsencrypt/letsencrypt-certbot/Dockerfile.j2":[{"author":{"_account_id":24072,"name":"Marcin Juszkiewicz","email":"mjuszkiewicz@redhat.com","username":"hrw"},"change_message_id":"fdf792741cfb47cddfe319c08ead54d20c8231ac","unresolved":true,"context_lines":[{"line_number":12,"context_line":"    {% set letsencrypt_certbot_packages \u003d ["},{"line_number":13,"context_line":"        \u0027certbot\u0027,"},{"line_number":14,"context_line":"        \u0027cronie\u0027,"},{"line_number":15,"context_line":"        \u0027python3-pip\u0027,"},{"line_number":16,"context_line":"        \u0027python3-augeas\u0027"},{"line_number":17,"context_line":"    ] %}"},{"line_number":18,"context_line":"{% elif base_package_type \u003d\u003d \u0027deb\u0027 %}"}],"source_content_type":"text/x-jinja2","patch_set":26,"id":"3071095b_12a818d6","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":1},"updated":"2021-04-09 11:45:47.000000000","message":"what for pip/setuptools are needed?","commit_id":"c2f3c734a3894c767cac2a25d837f89f8be8a979"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"f48d84025d13cd3cf1dc5f26583cf4dea7d2e913","unresolved":true,"context_lines":[{"line_number":15,"context_line":"    ] %}"},{"line_number":16,"context_line":"{% elif base_package_type \u003d\u003d \u0027deb\u0027 %}"},{"line_number":17,"context_line":"    {% set letsencrypt_certbot_packages \u003d ["},{"line_number":18,"context_line":"        \u0027certbot\u0027,"},{"line_number":19,"context_line":"        \u0027cron\u0027"},{"line_number":20,"context_line":"    ] %}"},{"line_number":21,"context_line":"{% endif %}"}],"source_content_type":"text/x-jinja2","patch_set":31,"id":"f11abd99_4433c99f","line":18,"range":{"start_line":18,"start_character":8,"end_line":18,"end_character":18},"updated":"2022-01-20 19:13:19.000000000","message":"are we sure we want to use certbot? lego seems to be a more complete solution (based on my dns auth experiences with Infoblox, which certbot lacks)","commit_id":"f7a2228f8a938b040866a8413a303d1e07211ff9"},{"author":{"_account_id":30810,"name":"James Kirsch","email":"generalfuzz@gmail.com","username":"generalfuzz"},"change_message_id":"aba1839eb60a402ed23f391ba4106c0838badabd","unresolved":true,"context_lines":[{"line_number":15,"context_line":"    ] %}"},{"line_number":16,"context_line":"{% elif base_package_type \u003d\u003d \u0027deb\u0027 %}"},{"line_number":17,"context_line":"    {% set letsencrypt_certbot_packages \u003d ["},{"line_number":18,"context_line":"        \u0027certbot\u0027,"},{"line_number":19,"context_line":"        \u0027cron\u0027"},{"line_number":20,"context_line":"    ] %}"},{"line_number":21,"context_line":"{% endif %}"}],"source_content_type":"text/x-jinja2","patch_set":31,"id":"66ec6374_f7b85a51","line":18,"range":{"start_line":18,"start_character":8,"end_line":18,"end_character":18},"in_reply_to":"f11abd99_4433c99f","updated":"2022-02-03 03:53:13.000000000","message":"certbot is available in epel. Unfortunately Lego is not.","commit_id":"f7a2228f8a938b040866a8413a303d1e07211ff9"}],"docker/letsencrypt/letsencrypt-ssh/Dockerfile.j2":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"878e00d386a032c9e03dce15cc5e35981fe8acfd","unresolved":true,"context_lines":[{"line_number":1,"context_line":"FROM {{ namespace }}/{{ image_prefix }}letsencrypt-base:{{ tag }}"},{"line_number":2,"context_line":"{% block labels %}"},{"line_number":3,"context_line":"LABEL maintainer\u003d\"{{ maintainer }}\" name\u003d\"{{ image_name }}\" build-date\u003d\"{{ build_date }}\""},{"line_number":4,"context_line":"{% endblock %}"}],"source_content_type":"text/x-jinja2","patch_set":12,"id":"d8dd86ad_90799633","line":1,"range":{"start_line":1,"start_character":24,"end_line":1,"end_character":36},"updated":"2021-01-27 14:21:41.000000000","message":"Should be infra_image_prefix if using base rather than openstack-base.","commit_id":"457761c7e5734d6524b09bf933122f6a16a16b93"},{"author":{"_account_id":30810,"name":"James Kirsch","email":"generalfuzz@gmail.com","username":"generalfuzz"},"change_message_id":"321eab16f6360b2b18d3b3c7783ed5972ae57a2b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"FROM {{ namespace }}/{{ image_prefix }}letsencrypt-base:{{ tag }}"},{"line_number":2,"context_line":"{% block labels %}"},{"line_number":3,"context_line":"LABEL maintainer\u003d\"{{ maintainer }}\" name\u003d\"{{ image_name }}\" build-date\u003d\"{{ build_date }}\""},{"line_number":4,"context_line":"{% endblock %}"}],"source_content_type":"text/x-jinja2","patch_set":12,"id":"f994ba5c_df79541c","line":1,"range":{"start_line":1,"start_character":24,"end_line":1,"end_character":36},"in_reply_to":"d8dd86ad_90799633","updated":"2021-03-21 00:11:51.000000000","message":"Done","commit_id":"457761c7e5734d6524b09bf933122f6a16a16b93"}],"docker/letsencrypt/letsencrypt-ssh/extend_start.sh":[{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"f48d84025d13cd3cf1dc5f26583cf4dea7d2e913","unresolved":true,"context_lines":[{"line_number":1,"context_line":"#!/bin/bash"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"SSH_HOST_KEY_TYPES\u003d( \"rsa\" \"dsa\" \"ecdsa\" \"ed25519\" )"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"for key_type in ${SSH_HOST_KEY_TYPES[@]}; do"},{"line_number":6,"context_line":"    KEY_PATH\u003d/etc/ssh/ssh_host_${key_type}_key"}],"source_content_type":"text/x-sh","patch_set":31,"id":"b61fea14_6839d801","line":3,"range":{"start_line":3,"start_character":27,"end_line":3,"end_character":32},"updated":"2022-01-20 19:13:19.000000000","message":"seriously we want to use/support dsa? they are deprecated (OpenSSH 7.0 and greater disable ssh-dss by default)","commit_id":"f7a2228f8a938b040866a8413a303d1e07211ff9"},{"author":{"_account_id":30810,"name":"James Kirsch","email":"generalfuzz@gmail.com","username":"generalfuzz"},"change_message_id":"aba1839eb60a402ed23f391ba4106c0838badabd","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/bin/bash"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"SSH_HOST_KEY_TYPES\u003d( \"rsa\" \"dsa\" \"ecdsa\" \"ed25519\" )"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"for key_type in ${SSH_HOST_KEY_TYPES[@]}; do"},{"line_number":6,"context_line":"    KEY_PATH\u003d/etc/ssh/ssh_host_${key_type}_key"}],"source_content_type":"text/x-sh","patch_set":31,"id":"27082b69_68993884","line":3,"range":{"start_line":3,"start_character":27,"end_line":3,"end_character":32},"in_reply_to":"b61fea14_6839d801","updated":"2022-02-03 03:53:13.000000000","message":"Done","commit_id":"f7a2228f8a938b040866a8413a303d1e07211ff9"}],"docker/letsencrypt/letsencrypt/Dockerfile.j2":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"878e00d386a032c9e03dce15cc5e35981fe8acfd","unresolved":true,"context_lines":[{"line_number":1,"context_line":"FROM {{ namespace }}/{{ infra_image_prefix }}letsencrypt-base:{{ tag }}"},{"line_number":2,"context_line":"LABEL maintainer\u003d\"{{ maintainer }}\" name\u003d\"{{ image_name }}\""},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"{% block letsencrypt_header %}{% endblock %}"}],"source_content_type":"text/x-jinja2","patch_set":12,"id":"1e55da58_07340dec","line":1,"range":{"start_line":1,"start_character":24,"end_line":1,"end_character":42},"updated":"2021-01-27 14:21:41.000000000","message":"Needs to be consistent.","commit_id":"457761c7e5734d6524b09bf933122f6a16a16b93"},{"author":{"_account_id":30810,"name":"James Kirsch","email":"generalfuzz@gmail.com","username":"generalfuzz"},"change_message_id":"321eab16f6360b2b18d3b3c7783ed5972ae57a2b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"FROM {{ namespace }}/{{ infra_image_prefix }}letsencrypt-base:{{ tag }}"},{"line_number":2,"context_line":"LABEL maintainer\u003d\"{{ maintainer }}\" name\u003d\"{{ image_name }}\""},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"{% block letsencrypt_header %}{% endblock %}"}],"source_content_type":"text/x-jinja2","patch_set":12,"id":"8dac0867_cfb570d7","line":1,"range":{"start_line":1,"start_character":24,"end_line":1,"end_character":42},"in_reply_to":"1e55da58_07340dec","updated":"2021-03-21 00:11:51.000000000","message":"Done","commit_id":"457761c7e5734d6524b09bf933122f6a16a16b93"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"878e00d386a032c9e03dce15cc5e35981fe8acfd","unresolved":true,"context_lines":[{"line_number":7,"context_line":""},{"line_number":8,"context_line":"{% if base_package_type \u003d\u003d \u0027rpm\u0027 %}"},{"line_number":9,"context_line":"    {% set letsencrypt_packages \u003d ["},{"line_number":10,"context_line":"        \u0027python3-pip\u0027,"},{"line_number":11,"context_line":"        \u0027python3-augeas\u0027,"},{"line_number":12,"context_line":"        \u0027cronie\u0027"},{"line_number":13,"context_line":"    ] %}"},{"line_number":14,"context_line":"{% elif base_package_type \u003d\u003d \u0027deb\u0027 %}"},{"line_number":15,"context_line":"    {% set letsencrypt_packages \u003d ["}],"source_content_type":"text/x-jinja2","patch_set":12,"id":"3087f877_de056d4f","line":12,"range":{"start_line":10,"start_character":0,"end_line":12,"end_character":16},"updated":"2021-01-27 14:21:41.000000000","message":"nit: alphabetise","commit_id":"457761c7e5734d6524b09bf933122f6a16a16b93"},{"author":{"_account_id":30810,"name":"James Kirsch","email":"generalfuzz@gmail.com","username":"generalfuzz"},"change_message_id":"321eab16f6360b2b18d3b3c7783ed5972ae57a2b","unresolved":false,"context_lines":[{"line_number":7,"context_line":""},{"line_number":8,"context_line":"{% if base_package_type \u003d\u003d \u0027rpm\u0027 %}"},{"line_number":9,"context_line":"    {% set letsencrypt_packages \u003d ["},{"line_number":10,"context_line":"        \u0027python3-pip\u0027,"},{"line_number":11,"context_line":"        \u0027python3-augeas\u0027,"},{"line_number":12,"context_line":"        \u0027cronie\u0027"},{"line_number":13,"context_line":"    ] %}"},{"line_number":14,"context_line":"{% elif base_package_type \u003d\u003d \u0027deb\u0027 %}"},{"line_number":15,"context_line":"    {% set letsencrypt_packages \u003d ["}],"source_content_type":"text/x-jinja2","patch_set":12,"id":"edf3cc26_6d95e171","line":12,"range":{"start_line":10,"start_character":0,"end_line":12,"end_character":16},"in_reply_to":"3087f877_de056d4f","updated":"2021-03-21 00:11:51.000000000","message":"Done","commit_id":"457761c7e5734d6524b09bf933122f6a16a16b93"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"878e00d386a032c9e03dce15cc5e35981fe8acfd","unresolved":true,"context_lines":[{"line_number":13,"context_line":"    ] %}"},{"line_number":14,"context_line":"{% elif base_package_type \u003d\u003d \u0027deb\u0027 %}"},{"line_number":15,"context_line":"    {% set letsencrypt_packages \u003d ["},{"line_number":16,"context_line":"        \u0027python3-pip\u0027,"},{"line_number":17,"context_line":"        \u0027python3-setuptools\u0027,"},{"line_number":18,"context_line":"        \u0027python3-augeas\u0027,"},{"line_number":19,"context_line":"        \u0027cron\u0027"},{"line_number":20,"context_line":"    ] %}"},{"line_number":21,"context_line":"{% endif %}"},{"line_number":22,"context_line":"{{ macros.install_packages(letsencrypt_packages | customizable(\"packages\")) }}"}],"source_content_type":"text/x-jinja2","patch_set":12,"id":"b0deb12d_3d96b6c0","line":19,"range":{"start_line":16,"start_character":0,"end_line":19,"end_character":14},"updated":"2021-01-27 14:21:41.000000000","message":"ditto","commit_id":"457761c7e5734d6524b09bf933122f6a16a16b93"},{"author":{"_account_id":30810,"name":"James Kirsch","email":"generalfuzz@gmail.com","username":"generalfuzz"},"change_message_id":"321eab16f6360b2b18d3b3c7783ed5972ae57a2b","unresolved":false,"context_lines":[{"line_number":13,"context_line":"    ] %}"},{"line_number":14,"context_line":"{% elif base_package_type \u003d\u003d \u0027deb\u0027 %}"},{"line_number":15,"context_line":"    {% set letsencrypt_packages \u003d ["},{"line_number":16,"context_line":"        \u0027python3-pip\u0027,"},{"line_number":17,"context_line":"        \u0027python3-setuptools\u0027,"},{"line_number":18,"context_line":"        \u0027python3-augeas\u0027,"},{"line_number":19,"context_line":"        \u0027cron\u0027"},{"line_number":20,"context_line":"    ] %}"},{"line_number":21,"context_line":"{% endif %}"},{"line_number":22,"context_line":"{{ macros.install_packages(letsencrypt_packages | customizable(\"packages\")) }}"}],"source_content_type":"text/x-jinja2","patch_set":12,"id":"e3b3e59f_1a89522f","line":19,"range":{"start_line":16,"start_character":0,"end_line":19,"end_character":14},"in_reply_to":"b0deb12d_3d96b6c0","updated":"2021-03-21 00:11:51.000000000","message":"Done","commit_id":"457761c7e5734d6524b09bf933122f6a16a16b93"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"59b0c0c3031d0f24598448456f2d518e18e755d2","unresolved":true,"context_lines":[{"line_number":21,"context_line":"{% endif %}"},{"line_number":22,"context_line":"{{ macros.install_packages(letsencrypt_packages | customizable(\"packages\")) }}"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"{% set letsencrypt_pip_packages \u003d [\u0027certbot\u0027] %}"},{"line_number":25,"context_line":"RUN {{ macros.install_pip(letsencrypt_pip_packages | customizable(\"pip_packages\"), constraints \u003d false) }}"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"COPY extend_start.sh /usr/local/bin/kolla_extend_start"},{"line_number":28,"context_line":"RUN chmod 755 /usr/local/bin/kolla_extend_start"}],"source_content_type":"text/x-jinja2","patch_set":12,"id":"ed42bc3d_b79123d2","line":25,"range":{"start_line":24,"start_character":0,"end_line":25,"end_character":106},"updated":"2021-01-27 16:49:01.000000000","message":"Strictly, this is really an infra image, and we don\u0027t tend to use pip in those images.\n\nThere is a certbot 1.11 package on EPEL: https://www.rpmfind.net/linux/RPM/epel/8/x86_64/Packages/c/certbot-1.11.0-1.el8.noarch.html\n\nAnd Ubuntu has 0.40: https://packages.ubuntu.com/focal/certbot\n\nAnd Debian has 0.31: https://packages.debian.org/buster/certbot","commit_id":"457761c7e5734d6524b09bf933122f6a16a16b93"},{"author":{"_account_id":30810,"name":"James Kirsch","email":"generalfuzz@gmail.com","username":"generalfuzz"},"change_message_id":"321eab16f6360b2b18d3b3c7783ed5972ae57a2b","unresolved":false,"context_lines":[{"line_number":21,"context_line":"{% endif %}"},{"line_number":22,"context_line":"{{ macros.install_packages(letsencrypt_packages | customizable(\"packages\")) }}"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"{% set letsencrypt_pip_packages \u003d [\u0027certbot\u0027] %}"},{"line_number":25,"context_line":"RUN {{ macros.install_pip(letsencrypt_pip_packages | customizable(\"pip_packages\"), constraints \u003d false) }}"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"COPY extend_start.sh /usr/local/bin/kolla_extend_start"},{"line_number":28,"context_line":"RUN chmod 755 /usr/local/bin/kolla_extend_start"}],"source_content_type":"text/x-jinja2","patch_set":12,"id":"e46f759f_943fa7db","line":25,"range":{"start_line":24,"start_character":0,"end_line":25,"end_character":106},"in_reply_to":"ed42bc3d_b79123d2","updated":"2021-03-21 00:11:51.000000000","message":"Done","commit_id":"457761c7e5734d6524b09bf933122f6a16a16b93"}],"releasenotes/notes/bp-letsencrypt-https-b3245976c513f99b.yaml":[{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"446c67f03cf7b3b16866100146a010fcaa43f792","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds support for automatically generating LetsEncrypt HTTPS certificates"},{"line_number":5,"context_line":"    via the ACME HTTP-01 challenge performed by certbot. Operators can deploy"},{"line_number":6,"context_line":"    LetsEncrypt containers that manage the automatic renewal of certificates."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"9f560f44_665a0df2","line":6,"range":{"start_line":4,"start_character":4,"end_line":6,"end_character":77},"updated":"2020-08-27 13:50:37.000000000","message":"I think it only adds two container images, I wouldn\u0027t call that support for generating anything ;-)","commit_id":"f5c062e826518574aa605f0585174eff73b7a868"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"878e00d386a032c9e03dce15cc5e35981fe8acfd","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds support for automatically generating LetsEncrypt HTTPS certificates"},{"line_number":5,"context_line":"    via the ACME HTTP-01 challenge performed by certbot. Operators can deploy"},{"line_number":6,"context_line":"    LetsEncrypt containers that manage the automatic renewal of certificates."}],"source_content_type":"text/x-yaml","patch_set":12,"id":"a6d5d1b9_9025c804","line":6,"range":{"start_line":4,"start_character":4,"end_line":6,"end_character":77},"updated":"2021-01-27 14:21:41.000000000","message":"From the perspective of Kolla, it really just adds a set of letsencrypt containers.","commit_id":"457761c7e5734d6524b09bf933122f6a16a16b93"},{"author":{"_account_id":30810,"name":"James Kirsch","email":"generalfuzz@gmail.com","username":"generalfuzz"},"change_message_id":"321eab16f6360b2b18d3b3c7783ed5972ae57a2b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds support for automatically generating LetsEncrypt HTTPS certificates"},{"line_number":5,"context_line":"    via the ACME HTTP-01 challenge performed by certbot. Operators can deploy"},{"line_number":6,"context_line":"    LetsEncrypt containers that manage the automatic renewal of certificates."}],"source_content_type":"text/x-yaml","patch_set":12,"id":"a4862209_393ed07c","line":6,"range":{"start_line":4,"start_character":4,"end_line":6,"end_character":77},"in_reply_to":"a6d5d1b9_9025c804","updated":"2021-03-21 00:11:51.000000000","message":"Done","commit_id":"457761c7e5734d6524b09bf933122f6a16a16b93"}]}
