)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"c6fbeade78a9beb71889da20426fd6c122193328","unresolved":true,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2021-07-29 08:43:18 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Use merge_configs and merge_yaml to generate custom config"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Id4588f4529a4522e68e22ce58711cb927fa68a9d"},{"line_number":10,"context_line":"Story: 2002009"},{"line_number":11,"context_line":"Task: 42903"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"c75432ea_c20d8259","line":8,"updated":"2021-08-10 14:45:41.000000000","message":"Commit message could use some more info. This patch adds new functionality - merging base \u0026 environment specific config.","commit_id":"425852a7f6a79bcd19a8b7c4d0dcb0e67c9e28cd"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"99c2bdc59ef448772e97686307621777f349465f","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2021-07-29 08:43:18 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Use merge_configs and merge_yaml to generate custom config"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Id4588f4529a4522e68e22ce58711cb927fa68a9d"},{"line_number":10,"context_line":"Story: 2002009"},{"line_number":11,"context_line":"Task: 42903"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"bedc9fa5_86cf2e7c","line":8,"in_reply_to":"c75432ea_c20d8259","updated":"2023-03-07 10:23:37.000000000","message":"Done","commit_id":"425852a7f6a79bcd19a8b7c4d0dcb0e67c9e28cd"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"5e22858185cd0f2ace363bfb289dcec58d0ba200","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"e4630eba_fcafaab3","updated":"2023-09-01 16:20:44.000000000","message":"Thanks for getting this passing again 😊","commit_id":"428ef10fa4d4a281f0c690876fc3cbfff41c2bbb"}],"ansible/inventory/group_vars/all/kolla":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"8740e89dc9f506f7f8639d90e0bc420a26c71fa1","unresolved":true,"context_lines":[{"line_number":575,"context_line":"# Kolla custom config generation."},{"line_number":576,"context_line":""},{"line_number":577,"context_line":"# Feature flag to add $KAYOBE_CONFIG_PATH to the list of search paths used"},{"line_number":578,"context_line":"# when searching for kolla configs. Only has an effect in a multiple"},{"line_number":579,"context_line":"# environments setup. This allows you to configure kolla config merging between"},{"line_number":580,"context_line":"# your environment and the base layer. Defaults to true. Set to false to for"},{"line_number":581,"context_line":"# backwards compatability."}],"source_content_type":"application/octet-stream","patch_set":18,"id":"6e7ac012_757d3e2d","line":578,"range":{"start_line":578,"start_character":21,"end_line":578,"end_character":26},"updated":"2023-04-19 14:10:26.000000000","message":"We already do this for some things. Would \"Kolla custom service configuration\" be more accurate?","commit_id":"3d7d5d2551496862564161670bc841e19890e867"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"554e600a7fe5c4b51d252d1bc41dd4d7b4627850","unresolved":false,"context_lines":[{"line_number":575,"context_line":"# Kolla custom config generation."},{"line_number":576,"context_line":""},{"line_number":577,"context_line":"# Feature flag to add $KAYOBE_CONFIG_PATH to the list of search paths used"},{"line_number":578,"context_line":"# when searching for kolla configs. Only has an effect in a multiple"},{"line_number":579,"context_line":"# environments setup. This allows you to configure kolla config merging between"},{"line_number":580,"context_line":"# your environment and the base layer. Defaults to true. Set to false to for"},{"line_number":581,"context_line":"# backwards compatability."}],"source_content_type":"application/octet-stream","patch_set":18,"id":"cf3bb2aa_43e5f266","line":578,"range":{"start_line":578,"start_character":21,"end_line":578,"end_character":26},"in_reply_to":"6e7ac012_757d3e2d","updated":"2023-04-19 14:11:14.000000000","message":"Done","commit_id":"3d7d5d2551496862564161670bc841e19890e867"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"945f57e609ed711ff484470f352aaec81612304e","unresolved":true,"context_lines":[{"line_number":577,"context_line":"# Feature flag to add $KAYOBE_CONFIG_PATH to the list of search paths used"},{"line_number":578,"context_line":"# when searching for Kolla custom service configuration. Only has an effect in"},{"line_number":579,"context_line":"# a multiple environments setup. This allows you to configure merging between"},{"line_number":580,"context_line":"# your environment and the base layer. Defaults to true. Set to false to for"},{"line_number":581,"context_line":"# backwards compatability."},{"line_number":582,"context_line":"kolla_openstack_custom_config_environment_merging_enabled: true"},{"line_number":583,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":22,"id":"f985f2af_a7b23606","line":580,"range":{"start_line":580,"start_character":70,"end_line":580,"end_character":72},"updated":"2023-05-30 15:45:06.000000000","message":"Remove","commit_id":"9bfd19293b2686cfd94448ee72d37ee34e348592"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"ddbc86dab7c3d8ec7da7b55c909e9e88fd9058d9","unresolved":false,"context_lines":[{"line_number":577,"context_line":"# Feature flag to add $KAYOBE_CONFIG_PATH to the list of search paths used"},{"line_number":578,"context_line":"# when searching for Kolla custom service configuration. Only has an effect in"},{"line_number":579,"context_line":"# a multiple environments setup. This allows you to configure merging between"},{"line_number":580,"context_line":"# your environment and the base layer. Defaults to true. Set to false to for"},{"line_number":581,"context_line":"# backwards compatability."},{"line_number":582,"context_line":"kolla_openstack_custom_config_environment_merging_enabled: true"},{"line_number":583,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":22,"id":"3ee1b060_b737fdcf","line":580,"range":{"start_line":580,"start_character":70,"end_line":580,"end_character":72},"in_reply_to":"f985f2af_a7b23606","updated":"2023-05-30 15:54:20.000000000","message":"Done","commit_id":"9bfd19293b2686cfd94448ee72d37ee34e348592"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"945f57e609ed711ff484470f352aaec81612304e","unresolved":true,"context_lines":[{"line_number":578,"context_line":"# when searching for Kolla custom service configuration. Only has an effect in"},{"line_number":579,"context_line":"# a multiple environments setup. This allows you to configure merging between"},{"line_number":580,"context_line":"# your environment and the base layer. Defaults to true. Set to false to for"},{"line_number":581,"context_line":"# backwards compatability."},{"line_number":582,"context_line":"kolla_openstack_custom_config_environment_merging_enabled: true"},{"line_number":583,"context_line":""},{"line_number":584,"context_line":"###############################################################################"}],"source_content_type":"application/octet-stream","patch_set":22,"id":"a8220736_9beb10db","line":581,"range":{"start_line":581,"start_character":12,"end_line":581,"end_character":25},"updated":"2023-05-30 15:45:06.000000000","message":"compatibility","commit_id":"9bfd19293b2686cfd94448ee72d37ee34e348592"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"ddbc86dab7c3d8ec7da7b55c909e9e88fd9058d9","unresolved":false,"context_lines":[{"line_number":578,"context_line":"# when searching for Kolla custom service configuration. Only has an effect in"},{"line_number":579,"context_line":"# a multiple environments setup. This allows you to configure merging between"},{"line_number":580,"context_line":"# your environment and the base layer. Defaults to true. Set to false to for"},{"line_number":581,"context_line":"# backwards compatability."},{"line_number":582,"context_line":"kolla_openstack_custom_config_environment_merging_enabled: true"},{"line_number":583,"context_line":""},{"line_number":584,"context_line":"###############################################################################"}],"source_content_type":"application/octet-stream","patch_set":22,"id":"e9a0de7f_69a21f5c","line":581,"range":{"start_line":581,"start_character":12,"end_line":581,"end_character":25},"in_reply_to":"a8220736_9beb10db","updated":"2023-05-30 15:54:20.000000000","message":"Done","commit_id":"9bfd19293b2686cfd94448ee72d37ee34e348592"}],"ansible/kolla-openstack.yml":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"8740e89dc9f506f7f8639d90e0bc420a26c71fa1","unresolved":true,"context_lines":[{"line_number":175,"context_line":"        - \"{{ kayobe_env_config_path }}\""},{"line_number":176,"context_line":"      kolla_openstack_custom_config_paths_extra_legacy:"},{"line_number":177,"context_line":"        - \"{{ kayobe_env_config_path }}\""},{"line_number":178,"context_line":"      kolla_openstack_custom_config_paths_extra: \"{{ kolla_openstack_custom_config_paths_extra_multi_env if kolla_openstack_custom_config_environment_merging_enabled else kolla_openstack_custom_config_paths_extra_legacy }}\""},{"line_number":179,"context_line":"      kolla_libvirt_tls: \"{{ compute_libvirt_enable_tls | bool }}\""},{"line_number":180,"context_line":"      kolla_nova_libvirt_certificates_src: \"{{ kayobe_env_config_path }}/certificates/libvirt\""}],"source_content_type":"text/x-yaml","patch_set":18,"id":"939762a7_ccd5c583","line":178,"range":{"start_line":178,"start_character":108,"end_line":178,"end_character":165},"updated":"2023-04-19 14:10:26.000000000","message":"nit:\n\n | bool","commit_id":"3d7d5d2551496862564161670bc841e19890e867"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"554e600a7fe5c4b51d252d1bc41dd4d7b4627850","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        - \"{{ kayobe_env_config_path }}\""},{"line_number":176,"context_line":"      kolla_openstack_custom_config_paths_extra_legacy:"},{"line_number":177,"context_line":"        - \"{{ kayobe_env_config_path }}\""},{"line_number":178,"context_line":"      kolla_openstack_custom_config_paths_extra: \"{{ kolla_openstack_custom_config_paths_extra_multi_env if kolla_openstack_custom_config_environment_merging_enabled else kolla_openstack_custom_config_paths_extra_legacy }}\""},{"line_number":179,"context_line":"      kolla_libvirt_tls: \"{{ compute_libvirt_enable_tls | bool }}\""},{"line_number":180,"context_line":"      kolla_nova_libvirt_certificates_src: \"{{ kayobe_env_config_path }}/certificates/libvirt\""}],"source_content_type":"text/x-yaml","patch_set":18,"id":"1f9574d3_e30af0d0","line":178,"range":{"start_line":178,"start_character":108,"end_line":178,"end_character":165},"in_reply_to":"939762a7_ccd5c583","updated":"2023-04-19 14:11:14.000000000","message":"Done","commit_id":"3d7d5d2551496862564161670bc841e19890e867"}],"ansible/roles/image-download/tasks/main.yml":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"8740e89dc9f506f7f8639d90e0bc420a26c71fa1","unresolved":true,"context_lines":[{"line_number":3,"context_line":"  file:"},{"line_number":4,"context_line":"    state: directory"},{"line_number":5,"context_line":"    path: \"{{ image_download_dest | dirname }}\""},{"line_number":6,"context_line":"    recurse: true"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"- block:"},{"line_number":9,"context_line":"    - block:"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"e6d11fda_abef1d6e","line":6,"updated":"2023-04-19 14:10:26.000000000","message":"\u003e recurse: Recursively set the specified file attributes on directory contents.\n\nI don\u0027t think it applies here, does it?","commit_id":"3d7d5d2551496862564161670bc841e19890e867"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"554e600a7fe5c4b51d252d1bc41dd4d7b4627850","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  file:"},{"line_number":4,"context_line":"    state: directory"},{"line_number":5,"context_line":"    path: \"{{ image_download_dest | dirname }}\""},{"line_number":6,"context_line":"    recurse: true"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"- block:"},{"line_number":9,"context_line":"    - block:"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"55f13974_3a703e11","line":6,"in_reply_to":"e6d11fda_abef1d6e","updated":"2023-04-19 14:11:14.000000000","message":"Done","commit_id":"3d7d5d2551496862564161670bc841e19890e867"}],"ansible/roles/kolla-openstack/action_plugins/kolla_custom_config_info.py":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"c6fbeade78a9beb71889da20426fd6c122193328","unresolved":true,"context_lines":[{"line_number":1,"context_line":"from __future__ import (absolute_import, division, print_function)"},{"line_number":2,"context_line":"__metaclass__ \u003d type"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"from ansible.plugins.action import ActionBase"}],"source_content_type":"text/x-python","patch_set":9,"id":"dbdffce1_7d96d5de","line":1,"updated":"2021-08-10 14:45:41.000000000","message":"Not required for py3","commit_id":"2abee026c1e44e89d4b3f9370aa0fa4583c06c94"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"53fc2723ed7db3a6b0cf53036c6bdbfecf21df3e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"from __future__ import (absolute_import, division, print_function)"},{"line_number":2,"context_line":"__metaclass__ \u003d type"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"from ansible.plugins.action import ActionBase"}],"source_content_type":"text/x-python","patch_set":9,"id":"01e7d965_4aa17ce7","line":1,"in_reply_to":"dbdffce1_7d96d5de","updated":"2022-09-15 08:42:46.000000000","message":"Done","commit_id":"2abee026c1e44e89d4b3f9370aa0fa4583c06c94"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"c6fbeade78a9beb71889da20426fd6c122193328","unresolved":true,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class ConfigCollector(object):"},{"line_number":22,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":23,"context_line":"        self.files_in_source \u003d defaultdict(list)"},{"line_number":24,"context_line":"        self.files_in_destination \u003d set()"},{"line_number":25,"context_line":"        self.include_globs \u003d kwargs.get(\"include_globs\", [])"},{"line_number":26,"context_line":"        self.ignore_globs \u003d kwargs.get(\"ignore_globs\", [])"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a46e8f5_b7ea9b49","line":23,"updated":"2021-08-10 14:45:41.000000000","message":"Comment to explain this mapping would be nice.","commit_id":"2abee026c1e44e89d4b3f9370aa0fa4583c06c94"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"80d7ef53ff4f267ae3e6723317c3f126a0516fe0","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class ConfigCollector(object):"},{"line_number":22,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":23,"context_line":"        self.files_in_source \u003d defaultdict(list)"},{"line_number":24,"context_line":"        self.files_in_destination \u003d set()"},{"line_number":25,"context_line":"        self.include_globs \u003d kwargs.get(\"include_globs\", [])"},{"line_number":26,"context_line":"        self.ignore_globs \u003d kwargs.get(\"ignore_globs\", [])"}],"source_content_type":"text/x-python","patch_set":9,"id":"c5c68e4f_df4d1fc2","line":23,"in_reply_to":"5a46e8f5_b7ea9b49","updated":"2022-09-15 09:33:55.000000000","message":"Done","commit_id":"2abee026c1e44e89d4b3f9370aa0fa4583c06c94"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"c6fbeade78a9beb71889da20426fd6c122193328","unresolved":true,"context_lines":[{"line_number":39,"context_line":"                    ignored.add(f)"},{"line_number":40,"context_line":"        result \u003d set(self.files_in_destination) - ignored"},{"line_number":41,"context_line":"        # Convert relative paths to absolute"},{"line_number":42,"context_line":"        return {os.path.join(self.destination, x) for x in result }"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def partition_into_actions(self):"},{"line_number":45,"context_line":"        actions \u003d {"}],"source_content_type":"text/x-python","patch_set":9,"id":"111f884e_dcddc656","line":42,"range":{"start_line":42,"start_character":15,"end_line":42,"end_character":67},"updated":"2021-08-10 14:45:41.000000000","message":"nit: doesn\u0027t really match function name.","commit_id":"2abee026c1e44e89d4b3f9370aa0fa4583c06c94"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"53fc2723ed7db3a6b0cf53036c6bdbfecf21df3e","unresolved":false,"context_lines":[{"line_number":39,"context_line":"                    ignored.add(f)"},{"line_number":40,"context_line":"        result \u003d set(self.files_in_destination) - ignored"},{"line_number":41,"context_line":"        # Convert relative paths to absolute"},{"line_number":42,"context_line":"        return {os.path.join(self.destination, x) for x in result }"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def partition_into_actions(self):"},{"line_number":45,"context_line":"        actions \u003d {"}],"source_content_type":"text/x-python","patch_set":9,"id":"18eb8e22_c9095dbb","line":42,"range":{"start_line":42,"start_character":15,"end_line":42,"end_character":67},"in_reply_to":"111f884e_dcddc656","updated":"2022-09-15 08:42:46.000000000","message":"Done","commit_id":"2abee026c1e44e89d4b3f9370aa0fa4583c06c94"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"c6fbeade78a9beb71889da20426fd6c122193328","unresolved":true,"context_lines":[{"line_number":62,"context_line":"            if not os.path.exists(dirname):"},{"line_number":63,"context_line":"                missing_directories.add(dirname)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"            for glob_ in self.template_exclude_globs:"},{"line_number":66,"context_line":"                if glob.globmatch(relative_path, glob_,"},{"line_number":67,"context_line":"                        flags\u003dglob.GLOBSTAR):"},{"line_number":68,"context_line":"                    copy \u003d {"},{"line_number":69,"context_line":"                        \"src\": sources[-1],"},{"line_number":70,"context_line":"                        \"dest\": destination"}],"source_content_type":"text/x-python","patch_set":9,"id":"3651282f_e64e4ea7","line":67,"range":{"start_line":65,"start_character":0,"end_line":67,"end_character":45},"updated":"2021-08-10 14:45:41.000000000","message":"nit: if this was factored out into an _is_copy function, you could do away with the found_match variable:\n\nif _is_copy(relative_path, glob_):\n    copy \u003d {\n        \"src\": sources[-1],\n        \"dest\": destination\n    }\n    actions[\"copy\"].append(copy)\n    continue","commit_id":"2abee026c1e44e89d4b3f9370aa0fa4583c06c94"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"53fc2723ed7db3a6b0cf53036c6bdbfecf21df3e","unresolved":false,"context_lines":[{"line_number":62,"context_line":"            if not os.path.exists(dirname):"},{"line_number":63,"context_line":"                missing_directories.add(dirname)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"            for glob_ in self.template_exclude_globs:"},{"line_number":66,"context_line":"                if glob.globmatch(relative_path, glob_,"},{"line_number":67,"context_line":"                        flags\u003dglob.GLOBSTAR):"},{"line_number":68,"context_line":"                    copy \u003d {"},{"line_number":69,"context_line":"                        \"src\": sources[-1],"},{"line_number":70,"context_line":"                        \"dest\": destination"}],"source_content_type":"text/x-python","patch_set":9,"id":"f1074632_6bce219c","line":67,"range":{"start_line":65,"start_character":0,"end_line":67,"end_character":45},"in_reply_to":"3651282f_e64e4ea7","updated":"2022-09-15 08:42:46.000000000","message":"Done","commit_id":"2abee026c1e44e89d4b3f9370aa0fa4583c06c94"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"c6fbeade78a9beb71889da20426fd6c122193328","unresolved":true,"context_lines":[{"line_number":119,"context_line":"        return actions"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def collect(self):"},{"line_number":122,"context_line":"        if self.collection_has_run_already:"},{"line_number":123,"context_line":"            return"},{"line_number":124,"context_line":"        for item in self.include_globs:"},{"line_number":125,"context_line":"            self._collect_source(item)"},{"line_number":126,"context_line":"            self._collect_destination(item)"}],"source_content_type":"text/x-python","patch_set":9,"id":"ced658be_d3a4b83a","line":123,"range":{"start_line":122,"start_character":0,"end_line":123,"end_character":18},"updated":"2021-08-10 14:45:41.000000000","message":"Seems unnecessary?","commit_id":"2abee026c1e44e89d4b3f9370aa0fa4583c06c94"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"53fc2723ed7db3a6b0cf53036c6bdbfecf21df3e","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        return actions"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def collect(self):"},{"line_number":122,"context_line":"        if self.collection_has_run_already:"},{"line_number":123,"context_line":"            return"},{"line_number":124,"context_line":"        for item in self.include_globs:"},{"line_number":125,"context_line":"            self._collect_source(item)"},{"line_number":126,"context_line":"            self._collect_destination(item)"}],"source_content_type":"text/x-python","patch_set":9,"id":"cee8746d_a0f9eea6","line":123,"range":{"start_line":122,"start_character":0,"end_line":123,"end_character":18},"in_reply_to":"ced658be_d3a4b83a","updated":"2022-09-15 08:42:46.000000000","message":"Done","commit_id":"2abee026c1e44e89d4b3f9370aa0fa4583c06c94"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"c6fbeade78a9beb71889da20426fd6c122193328","unresolved":true,"context_lines":[{"line_number":142,"context_line":"                self.files_in_source[relative_path].append(abs_path)"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    def _collect_destination(self, item):"},{"line_number":145,"context_line":"            abs_glob \u003d os.path.join(self.destination, item[\"glob\"])"},{"line_number":146,"context_line":"            files \u003d glob.glob(abs_glob, flags\u003dglob.GLOBSTAR)"},{"line_number":147,"context_line":"            for abs_path in files:"},{"line_number":148,"context_line":"                if not os.path.isfile(abs_path):"},{"line_number":149,"context_line":"                    continue"},{"line_number":150,"context_line":"                relative_path \u003d os.path.relpath(abs_path, self.destination)"},{"line_number":151,"context_line":"                self.files_in_destination.add(relative_path)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"class ActionModule(ActionBase):"},{"line_number":154,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"488b1821_439d85bd","line":151,"range":{"start_line":145,"start_character":0,"end_line":151,"end_character":60},"updated":"2021-08-10 14:45:41.000000000","message":"indentation","commit_id":"2abee026c1e44e89d4b3f9370aa0fa4583c06c94"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"53fc2723ed7db3a6b0cf53036c6bdbfecf21df3e","unresolved":false,"context_lines":[{"line_number":142,"context_line":"                self.files_in_source[relative_path].append(abs_path)"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    def _collect_destination(self, item):"},{"line_number":145,"context_line":"            abs_glob \u003d os.path.join(self.destination, item[\"glob\"])"},{"line_number":146,"context_line":"            files \u003d glob.glob(abs_glob, flags\u003dglob.GLOBSTAR)"},{"line_number":147,"context_line":"            for abs_path in files:"},{"line_number":148,"context_line":"                if not os.path.isfile(abs_path):"},{"line_number":149,"context_line":"                    continue"},{"line_number":150,"context_line":"                relative_path \u003d os.path.relpath(abs_path, self.destination)"},{"line_number":151,"context_line":"                self.files_in_destination.add(relative_path)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"class ActionModule(ActionBase):"},{"line_number":154,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"ca7ea4ce_13302dda","line":151,"range":{"start_line":145,"start_character":0,"end_line":151,"end_character":60},"in_reply_to":"488b1821_439d85bd","updated":"2022-09-15 08:42:46.000000000","message":"Done","commit_id":"2abee026c1e44e89d4b3f9370aa0fa4583c06c94"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"629ffe84565090944c52549f88d63fee1a443e82","unresolved":true,"context_lines":[{"line_number":1,"context_line":"from ansible.plugins.action import ActionBase"},{"line_number":2,"context_line":"import os"},{"line_number":3,"context_line":"from collections import defaultdict"},{"line_number":4,"context_line":"import pathlib"}],"source_content_type":"text/x-python","patch_set":20,"id":"b6f358c6_5e6f2a8f","line":1,"updated":"2023-04-19 14:33:55.000000000","message":"Shouldn\u0027t we have an Apache license header?","commit_id":"373edbecb1d2603f6e25176fc0f9b47c34cd511e"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"945f57e609ed711ff484470f352aaec81612304e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"from ansible.plugins.action import ActionBase"},{"line_number":2,"context_line":"import os"},{"line_number":3,"context_line":"from collections import defaultdict"},{"line_number":4,"context_line":"import pathlib"}],"source_content_type":"text/x-python","patch_set":20,"id":"8517e5a5_71095852","line":1,"in_reply_to":"b6f358c6_5e6f2a8f","updated":"2023-05-30 15:45:06.000000000","message":"Done","commit_id":"373edbecb1d2603f6e25176fc0f9b47c34cd511e"}],"ansible/roles/kolla-openstack/defaults/main.yml":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"c6fbeade78a9beb71889da20426fd6c122193328","unresolved":true,"context_lines":[{"line_number":13,"context_line":"# Ordered list of paths to extra kolla-ansible configuration files. Least"},{"line_number":14,"context_line":"# specific first. Default is a combination of kolla_config_paths_default"},{"line_number":15,"context_line":"# and kolla_config_paths_extra"},{"line_number":16,"context_line":"kolla_config_paths: \"{{ kolla_config_paths_default + kolla_config_paths_extra }}\""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"# Directory where Kolla custom configuration files will be installed."},{"line_number":19,"context_line":"kolla_node_custom_config_path: /etc/kolla/config"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"70d409e2_7916277b","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":18},"updated":"2021-08-10 14:45:41.000000000","message":"kolla_custom_config_paths?\nor\nkolla_openstack_custom_config_paths?","commit_id":"2abee026c1e44e89d4b3f9370aa0fa4583c06c94"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"53fc2723ed7db3a6b0cf53036c6bdbfecf21df3e","unresolved":true,"context_lines":[{"line_number":13,"context_line":"# Ordered list of paths to extra kolla-ansible configuration files. Least"},{"line_number":14,"context_line":"# specific first. Default is a combination of kolla_config_paths_default"},{"line_number":15,"context_line":"# and kolla_config_paths_extra"},{"line_number":16,"context_line":"kolla_config_paths: \"{{ kolla_config_paths_default + kolla_config_paths_extra }}\""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"# Directory where Kolla custom configuration files will be installed."},{"line_number":19,"context_line":"kolla_node_custom_config_path: /etc/kolla/config"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"8a732551_2bff8e49","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":18},"in_reply_to":"70d409e2_7916277b","updated":"2022-09-15 08:42:46.000000000","message":"Went with kolla_openstack_custom_config_paths.","commit_id":"2abee026c1e44e89d4b3f9370aa0fa4583c06c94"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"80d7ef53ff4f267ae3e6723317c3f126a0516fe0","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# Ordered list of paths to extra kolla-ansible configuration files. Least"},{"line_number":14,"context_line":"# specific first. Default is a combination of kolla_config_paths_default"},{"line_number":15,"context_line":"# and kolla_config_paths_extra"},{"line_number":16,"context_line":"kolla_config_paths: \"{{ kolla_config_paths_default + kolla_config_paths_extra }}\""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"# Directory where Kolla custom configuration files will be installed."},{"line_number":19,"context_line":"kolla_node_custom_config_path: /etc/kolla/config"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"38d8ac4c_78d89bad","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":18},"in_reply_to":"8a732551_2bff8e49","updated":"2022-09-15 09:33:55.000000000","message":"Done","commit_id":"2abee026c1e44e89d4b3f9370aa0fa4583c06c94"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"c6fbeade78a9beb71889da20426fd6c122193328","unresolved":true,"context_lines":[{"line_number":61,"context_line":"  - enabled: \u0027{{ kolla_enable_elasticsearch | bool }}\u0027"},{"line_number":62,"context_line":"    glob: elasticsearch/**"},{"line_number":63,"context_line":"  - enabled: true"},{"line_number":64,"context_line":"    glob: fluentd/filter/*.conf"},{"line_number":65,"context_line":"  - enabled: true"},{"line_number":66,"context_line":"    glob: fluentd/input/*.conf"},{"line_number":67,"context_line":"  - enabled: true"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"519063b1_01f374fd","line":64,"range":{"start_line":64,"start_character":4,"end_line":64,"end_character":31},"updated":"2021-08-10 14:45:41.000000000","message":"fluentd/**/*.conf?","commit_id":"2abee026c1e44e89d4b3f9370aa0fa4583c06c94"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"80d7ef53ff4f267ae3e6723317c3f126a0516fe0","unresolved":false,"context_lines":[{"line_number":61,"context_line":"  - enabled: \u0027{{ kolla_enable_elasticsearch | bool }}\u0027"},{"line_number":62,"context_line":"    glob: elasticsearch/**"},{"line_number":63,"context_line":"  - enabled: true"},{"line_number":64,"context_line":"    glob: fluentd/filter/*.conf"},{"line_number":65,"context_line":"  - enabled: true"},{"line_number":66,"context_line":"    glob: fluentd/input/*.conf"},{"line_number":67,"context_line":"  - enabled: true"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"beac2224_8d1f6291","line":64,"range":{"start_line":64,"start_character":4,"end_line":64,"end_character":31},"in_reply_to":"3b6f3473_80995cc6","updated":"2022-09-15 09:33:55.000000000","message":"Done","commit_id":"2abee026c1e44e89d4b3f9370aa0fa4583c06c94"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"53fc2723ed7db3a6b0cf53036c6bdbfecf21df3e","unresolved":true,"context_lines":[{"line_number":61,"context_line":"  - enabled: \u0027{{ kolla_enable_elasticsearch | bool }}\u0027"},{"line_number":62,"context_line":"    glob: elasticsearch/**"},{"line_number":63,"context_line":"  - enabled: true"},{"line_number":64,"context_line":"    glob: fluentd/filter/*.conf"},{"line_number":65,"context_line":"  - enabled: true"},{"line_number":66,"context_line":"    glob: fluentd/input/*.conf"},{"line_number":67,"context_line":"  - enabled: true"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"3b6f3473_80995cc6","line":64,"range":{"start_line":64,"start_character":4,"end_line":64,"end_character":31},"in_reply_to":"519063b1_01f374fd","updated":"2022-09-15 08:42:46.000000000","message":"looks good, thanks.","commit_id":"2abee026c1e44e89d4b3f9370aa0fa4583c06c94"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"c6fbeade78a9beb71889da20426fd6c122193328","unresolved":true,"context_lines":[{"line_number":175,"context_line":"kolla_openstack_custom_config_template_exclude_globs_default:"},{"line_number":176,"context_line":"  - ironic/ironic-agent.initramfs"},{"line_number":177,"context_line":"  - ironic/ironic-agent.kernel"},{"line_number":178,"context_line":"  - swift/account.builder"},{"line_number":179,"context_line":"  - swift/account.ring.gz"},{"line_number":180,"context_line":"  - swift/container.builder"},{"line_number":181,"context_line":"  - swift/container.ring.gz"},{"line_number":182,"context_line":"  - swift/object.builder"},{"line_number":183,"context_line":"  - swift/object.ring.gz"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"# Extra items to add to kolla_openstack_custom_config_template_exclude_globs_default"},{"line_number":186,"context_line":"# to produce kolla_openstack_custom_config_template_exclude_globs."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"b689ad01_306a8e6a","line":183,"range":{"start_line":178,"start_character":0,"end_line":183,"end_character":24},"updated":"2021-08-10 14:45:41.000000000","message":"- swift/*.builder\n- swift/*.ring.gz","commit_id":"2abee026c1e44e89d4b3f9370aa0fa4583c06c94"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"53fc2723ed7db3a6b0cf53036c6bdbfecf21df3e","unresolved":false,"context_lines":[{"line_number":175,"context_line":"kolla_openstack_custom_config_template_exclude_globs_default:"},{"line_number":176,"context_line":"  - ironic/ironic-agent.initramfs"},{"line_number":177,"context_line":"  - ironic/ironic-agent.kernel"},{"line_number":178,"context_line":"  - swift/account.builder"},{"line_number":179,"context_line":"  - swift/account.ring.gz"},{"line_number":180,"context_line":"  - swift/container.builder"},{"line_number":181,"context_line":"  - swift/container.ring.gz"},{"line_number":182,"context_line":"  - swift/object.builder"},{"line_number":183,"context_line":"  - swift/object.ring.gz"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"# Extra items to add to kolla_openstack_custom_config_template_exclude_globs_default"},{"line_number":186,"context_line":"# to produce kolla_openstack_custom_config_template_exclude_globs."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"3ad0d860_5dd262c3","line":183,"range":{"start_line":178,"start_character":0,"end_line":183,"end_character":24},"in_reply_to":"b689ad01_306a8e6a","updated":"2022-09-15 08:42:46.000000000","message":"Done","commit_id":"2abee026c1e44e89d4b3f9370aa0fa4583c06c94"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"c6fbeade78a9beb71889da20426fd6c122193328","unresolved":true,"context_lines":[{"line_number":193,"context_line":""},{"line_number":194,"context_line":"# Default value for openstack_custom_config_merge_ini_globs."},{"line_number":195,"context_line":"kolla_openstack_custom_config_merge_ini_globs_default:"},{"line_number":196,"context_line":"  - glob: kafka.server.properties"},{"line_number":197,"context_line":"  - glob: \"*.conf\""},{"line_number":198,"context_line":"  - glob: \"*.ini\""},{"line_number":199,"context_line":"  - glob: galera.cnf"},{"line_number":200,"context_line":"  - glob: zookeeper.cfg"},{"line_number":201,"context_line":"  - glob: neutron/ml2_conf.ini"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"# Extra items to add to kolla_openstack_custom_config_merge_ini_globs_default"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"70fab59a_0524e297","line":200,"range":{"start_line":196,"start_character":0,"end_line":200,"end_character":23},"updated":"2021-08-10 14:45:41.000000000","message":"might be best to add **/ to catch things like per-host or per-service config.","commit_id":"2abee026c1e44e89d4b3f9370aa0fa4583c06c94"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"554e600a7fe5c4b51d252d1bc41dd4d7b4627850","unresolved":false,"context_lines":[{"line_number":193,"context_line":""},{"line_number":194,"context_line":"# Default value for openstack_custom_config_merge_ini_globs."},{"line_number":195,"context_line":"kolla_openstack_custom_config_merge_ini_globs_default:"},{"line_number":196,"context_line":"  - glob: kafka.server.properties"},{"line_number":197,"context_line":"  - glob: \"*.conf\""},{"line_number":198,"context_line":"  - glob: \"*.ini\""},{"line_number":199,"context_line":"  - glob: galera.cnf"},{"line_number":200,"context_line":"  - glob: zookeeper.cfg"},{"line_number":201,"context_line":"  - glob: neutron/ml2_conf.ini"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"# Extra items to add to kolla_openstack_custom_config_merge_ini_globs_default"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"0e157c55_ef2ca0e9","line":200,"range":{"start_line":196,"start_character":0,"end_line":200,"end_character":23},"in_reply_to":"5e56baf5_cd14a564","updated":"2023-04-19 14:11:14.000000000","message":"Done","commit_id":"2abee026c1e44e89d4b3f9370aa0fa4583c06c94"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"53fc2723ed7db3a6b0cf53036c6bdbfecf21df3e","unresolved":true,"context_lines":[{"line_number":193,"context_line":""},{"line_number":194,"context_line":"# Default value for openstack_custom_config_merge_ini_globs."},{"line_number":195,"context_line":"kolla_openstack_custom_config_merge_ini_globs_default:"},{"line_number":196,"context_line":"  - glob: kafka.server.properties"},{"line_number":197,"context_line":"  - glob: \"*.conf\""},{"line_number":198,"context_line":"  - glob: \"*.ini\""},{"line_number":199,"context_line":"  - glob: galera.cnf"},{"line_number":200,"context_line":"  - glob: zookeeper.cfg"},{"line_number":201,"context_line":"  - glob: neutron/ml2_conf.ini"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"# Extra items to add to kolla_openstack_custom_config_merge_ini_globs_default"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"f7f2e3a8_372df44c","line":200,"range":{"start_line":196,"start_character":0,"end_line":200,"end_character":23},"in_reply_to":"70fab59a_0524e297","updated":"2022-09-15 08:42:46.000000000","message":"I\u0027ve done this for *.ini. Can we guarantee that any conf file is in ini format?","commit_id":"2abee026c1e44e89d4b3f9370aa0fa4583c06c94"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"8740e89dc9f506f7f8639d90e0bc420a26c71fa1","unresolved":true,"context_lines":[{"line_number":193,"context_line":""},{"line_number":194,"context_line":"# Default value for openstack_custom_config_merge_ini_globs."},{"line_number":195,"context_line":"kolla_openstack_custom_config_merge_ini_globs_default:"},{"line_number":196,"context_line":"  - glob: kafka.server.properties"},{"line_number":197,"context_line":"  - glob: \"*.conf\""},{"line_number":198,"context_line":"  - glob: \"*.ini\""},{"line_number":199,"context_line":"  - glob: galera.cnf"},{"line_number":200,"context_line":"  - glob: zookeeper.cfg"},{"line_number":201,"context_line":"  - glob: neutron/ml2_conf.ini"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"# Extra items to add to kolla_openstack_custom_config_merge_ini_globs_default"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"5e56baf5_cd14a564","line":200,"range":{"start_line":196,"start_character":0,"end_line":200,"end_character":23},"in_reply_to":"9021c005_b7a31494","updated":"2023-04-19 14:10:26.000000000","message":"I think it will be unintuitive if these files just end up with the template strategy. Can we define some explicit template rules for exceptions, then add a blanket *.conf rule? Kolla-ansible uses merge_configs for ceph.conf.","commit_id":"2abee026c1e44e89d4b3f9370aa0fa4583c06c94"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"99c2bdc59ef448772e97686307621777f349465f","unresolved":true,"context_lines":[{"line_number":193,"context_line":""},{"line_number":194,"context_line":"# Default value for openstack_custom_config_merge_ini_globs."},{"line_number":195,"context_line":"kolla_openstack_custom_config_merge_ini_globs_default:"},{"line_number":196,"context_line":"  - glob: kafka.server.properties"},{"line_number":197,"context_line":"  - glob: \"*.conf\""},{"line_number":198,"context_line":"  - glob: \"*.ini\""},{"line_number":199,"context_line":"  - glob: galera.cnf"},{"line_number":200,"context_line":"  - glob: zookeeper.cfg"},{"line_number":201,"context_line":"  - glob: neutron/ml2_conf.ini"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"# Extra items to add to kolla_openstack_custom_config_merge_ini_globs_default"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"9021c005_b7a31494","line":200,"range":{"start_line":196,"start_character":0,"end_line":200,"end_character":23},"in_reply_to":"f7f2e3a8_372df44c","updated":"2023-03-07 10:23:37.000000000","message":"I think the exceptions are fluentd and ceph config","commit_id":"2abee026c1e44e89d4b3f9370aa0fa4583c06c94"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"c6fbeade78a9beb71889da20426fd6c122193328","unresolved":true,"context_lines":[{"line_number":198,"context_line":"  - glob: \"*.ini\""},{"line_number":199,"context_line":"  - glob: galera.cnf"},{"line_number":200,"context_line":"  - glob: zookeeper.cfg"},{"line_number":201,"context_line":"  - glob: neutron/ml2_conf.ini"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"# Extra items to add to kolla_openstack_custom_config_merge_ini_globs_default"},{"line_number":204,"context_line":"# to produce openstack_custom_config_merge_ini_globs."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"2174846b_8f68a902","line":201,"range":{"start_line":201,"start_character":0,"end_line":201,"end_character":30},"updated":"2021-08-10 14:45:41.000000000","message":"not required if we go with above","commit_id":"2abee026c1e44e89d4b3f9370aa0fa4583c06c94"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"53fc2723ed7db3a6b0cf53036c6bdbfecf21df3e","unresolved":false,"context_lines":[{"line_number":198,"context_line":"  - glob: \"*.ini\""},{"line_number":199,"context_line":"  - glob: galera.cnf"},{"line_number":200,"context_line":"  - glob: zookeeper.cfg"},{"line_number":201,"context_line":"  - glob: neutron/ml2_conf.ini"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"# Extra items to add to kolla_openstack_custom_config_merge_ini_globs_default"},{"line_number":204,"context_line":"# to produce openstack_custom_config_merge_ini_globs."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"7b1fdfc7_63fcdbc4","line":201,"range":{"start_line":201,"start_character":0,"end_line":201,"end_character":30},"in_reply_to":"2174846b_8f68a902","updated":"2022-09-15 08:42:46.000000000","message":"Done","commit_id":"2abee026c1e44e89d4b3f9370aa0fa4583c06c94"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"c6fbeade78a9beb71889da20426fd6c122193328","unresolved":true,"context_lines":[{"line_number":215,"context_line":"  kolla_openstack_custom_config_merge_ini_globs_extra }}\""},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"# Default value for openstack_custom_config_merge_yml_globs."},{"line_number":218,"context_line":"kolla_openstack_custom_config_merge_yml_globs_default: []"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"# Extra items to add to kolla_openstack_custom_config_merge_yml_globs_default"},{"line_number":221,"context_line":"# to produce openstack_custom_config_merge_yml_globs."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"361b4211_4f848ea4","line":218,"updated":"2021-08-10 14:45:41.000000000","message":"Don\u0027t we want these?\n\n**/*.yml\n**/*.yaml","commit_id":"2abee026c1e44e89d4b3f9370aa0fa4583c06c94"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"80d7ef53ff4f267ae3e6723317c3f126a0516fe0","unresolved":false,"context_lines":[{"line_number":215,"context_line":"  kolla_openstack_custom_config_merge_ini_globs_extra }}\""},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"# Default value for openstack_custom_config_merge_yml_globs."},{"line_number":218,"context_line":"kolla_openstack_custom_config_merge_yml_globs_default: []"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"# Extra items to add to kolla_openstack_custom_config_merge_yml_globs_default"},{"line_number":221,"context_line":"# to produce openstack_custom_config_merge_yml_globs."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"dbcab71e_e892c9e3","line":218,"in_reply_to":"2122df02_f3068f83","updated":"2022-09-15 09:33:55.000000000","message":"Done","commit_id":"2abee026c1e44e89d4b3f9370aa0fa4583c06c94"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"53fc2723ed7db3a6b0cf53036c6bdbfecf21df3e","unresolved":true,"context_lines":[{"line_number":215,"context_line":"  kolla_openstack_custom_config_merge_ini_globs_extra }}\""},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"# Default value for openstack_custom_config_merge_yml_globs."},{"line_number":218,"context_line":"kolla_openstack_custom_config_merge_yml_globs_default: []"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"# Extra items to add to kolla_openstack_custom_config_merge_yml_globs_default"},{"line_number":221,"context_line":"# to produce openstack_custom_config_merge_yml_globs."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"2122df02_f3068f83","line":218,"in_reply_to":"361b4211_4f848ea4","updated":"2022-09-15 08:42:46.000000000","message":"Done, a user will need to add some additional globs to include_globs if they aren\u0027t already matched.","commit_id":"2abee026c1e44e89d4b3f9370aa0fa4583c06c94"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"c6fbeade78a9beb71889da20426fd6c122193328","unresolved":true,"context_lines":[{"line_number":227,"context_line":"# E.g:"},{"line_number":228,"context_line":"# kolla_openstack_custom_config_merge_yml_globs:"},{"line_number":229,"context_line":"#   - glob: \"**/*.yml\""},{"line_number":230,"context_line":"#     merge_lists: false"},{"line_number":231,"context_line":"kolla_openstack_custom_config_merge_yml_globs: \"{{"},{"line_number":232,"context_line":"  kolla_openstack_custom_config_merge_yml_globs_default +"},{"line_number":233,"context_line":"  kolla_openstack_custom_config_merge_yml_globs_extra }}\""}],"source_content_type":"text/x-yaml","patch_set":9,"id":"0ea225a0_1200ce93","line":230,"range":{"start_line":230,"start_character":6,"end_line":230,"end_character":17},"updated":"2021-08-10 14:45:41.000000000","message":"do you mean extend_lists? Looks like it\u0027s not supported in the config collector yet.","commit_id":"2abee026c1e44e89d4b3f9370aa0fa4583c06c94"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"53fc2723ed7db3a6b0cf53036c6bdbfecf21df3e","unresolved":true,"context_lines":[{"line_number":227,"context_line":"# E.g:"},{"line_number":228,"context_line":"# kolla_openstack_custom_config_merge_yml_globs:"},{"line_number":229,"context_line":"#   - glob: \"**/*.yml\""},{"line_number":230,"context_line":"#     merge_lists: false"},{"line_number":231,"context_line":"kolla_openstack_custom_config_merge_yml_globs: \"{{"},{"line_number":232,"context_line":"  kolla_openstack_custom_config_merge_yml_globs_default +"},{"line_number":233,"context_line":"  kolla_openstack_custom_config_merge_yml_globs_extra }}\""}],"source_content_type":"text/x-yaml","patch_set":9,"id":"85587d5d_4cc4bfca","line":230,"range":{"start_line":230,"start_character":6,"end_line":230,"end_character":17},"in_reply_to":"0ea225a0_1200ce93","updated":"2022-09-15 08:42:46.000000000","message":"Correct, I\u0027ve added a more generic params key to the matching rule. These parameters get merged with the parameters that we pass to the module.","commit_id":"2abee026c1e44e89d4b3f9370aa0fa4583c06c94"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"80d7ef53ff4f267ae3e6723317c3f126a0516fe0","unresolved":false,"context_lines":[{"line_number":227,"context_line":"# E.g:"},{"line_number":228,"context_line":"# kolla_openstack_custom_config_merge_yml_globs:"},{"line_number":229,"context_line":"#   - glob: \"**/*.yml\""},{"line_number":230,"context_line":"#     merge_lists: false"},{"line_number":231,"context_line":"kolla_openstack_custom_config_merge_yml_globs: \"{{"},{"line_number":232,"context_line":"  kolla_openstack_custom_config_merge_yml_globs_default +"},{"line_number":233,"context_line":"  kolla_openstack_custom_config_merge_yml_globs_extra }}\""}],"source_content_type":"text/x-yaml","patch_set":9,"id":"b1979d12_15b1642b","line":230,"range":{"start_line":230,"start_character":6,"end_line":230,"end_character":17},"in_reply_to":"85587d5d_4cc4bfca","updated":"2022-09-15 09:33:55.000000000","message":"Done","commit_id":"2abee026c1e44e89d4b3f9370aa0fa4583c06c94"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"8740e89dc9f506f7f8639d90e0bc420a26c71fa1","unresolved":true,"context_lines":[{"line_number":135,"context_line":"  - enabled: \u0027{{ kolla_enable_octavia | bool  }}\u0027"},{"line_number":136,"context_line":"    glob: octavia.conf"},{"line_number":137,"context_line":"  - enabled: \u0027{{ kolla_enable_octavia | bool }}\u0027"},{"line_number":138,"context_line":"    glob: octavia/**"},{"line_number":139,"context_line":"  - enabled: \u0027{{ kolla_enable_placement | bool }}\u0027"},{"line_number":140,"context_line":"    glob: placement.conf"},{"line_number":141,"context_line":"  - enabled: \u0027{{ kolla_enable_placement | bool }}\u0027"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"70a97c4c_d3af5b5c","line":138,"updated":"2023-04-19 14:10:26.000000000","message":"opensearch","commit_id":"3d7d5d2551496862564161670bc841e19890e867"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"554e600a7fe5c4b51d252d1bc41dd4d7b4627850","unresolved":false,"context_lines":[{"line_number":135,"context_line":"  - enabled: \u0027{{ kolla_enable_octavia | bool  }}\u0027"},{"line_number":136,"context_line":"    glob: octavia.conf"},{"line_number":137,"context_line":"  - enabled: \u0027{{ kolla_enable_octavia | bool }}\u0027"},{"line_number":138,"context_line":"    glob: octavia/**"},{"line_number":139,"context_line":"  - enabled: \u0027{{ kolla_enable_placement | bool }}\u0027"},{"line_number":140,"context_line":"    glob: placement.conf"},{"line_number":141,"context_line":"  - enabled: \u0027{{ kolla_enable_placement | bool }}\u0027"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"2f9a8630_5f5b9b36","line":138,"in_reply_to":"70a97c4c_d3af5b5c","updated":"2023-04-19 14:11:14.000000000","message":"Done","commit_id":"3d7d5d2551496862564161670bc841e19890e867"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"8740e89dc9f506f7f8639d90e0bc420a26c71fa1","unresolved":true,"context_lines":[{"line_number":202,"context_line":""},{"line_number":203,"context_line":"# Default value for kolla_openstack_custom_config_rules."},{"line_number":204,"context_line":"kolla_openstack_custom_config_rules_default:"},{"line_number":205,"context_line":"  - glob: horizon/themes"},{"line_number":206,"context_line":"    strategy: copy"},{"line_number":207,"context_line":"    priority: 1000"},{"line_number":208,"context_line":"  - glob: ironic/ironic-agent.initramfs"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"f1af2811_f8afa376","line":205,"updated":"2023-04-19 14:10:26.000000000","message":"Will it match files and directories in the horizon/themes directory? Or should it be\n\n horizon/themes/**","commit_id":"3d7d5d2551496862564161670bc841e19890e867"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"554e600a7fe5c4b51d252d1bc41dd4d7b4627850","unresolved":false,"context_lines":[{"line_number":202,"context_line":""},{"line_number":203,"context_line":"# Default value for kolla_openstack_custom_config_rules."},{"line_number":204,"context_line":"kolla_openstack_custom_config_rules_default:"},{"line_number":205,"context_line":"  - glob: horizon/themes"},{"line_number":206,"context_line":"    strategy: copy"},{"line_number":207,"context_line":"    priority: 1000"},{"line_number":208,"context_line":"  - glob: ironic/ironic-agent.initramfs"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"54b4fed1_2ca849ff","line":205,"in_reply_to":"f1af2811_f8afa376","updated":"2023-04-19 14:11:14.000000000","message":"Done","commit_id":"3d7d5d2551496862564161670bc841e19890e867"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"8740e89dc9f506f7f8639d90e0bc420a26c71fa1","unresolved":true,"context_lines":[{"line_number":225,"context_line":"    strategy: \"{{ kolla_openstack_custom_config_ini_merge_strategy_default }}\""},{"line_number":226,"context_line":"    priority: 2000"},{"line_number":227,"context_line":"    enabled: \"{{ kolla_openstack_custom_config_merge_configs_enabled | bool }}\""},{"line_number":228,"context_line":"  - glob: \"*.conf\""},{"line_number":229,"context_line":"    strategy: \"{{ kolla_openstack_custom_config_ini_merge_strategy_default }}\""},{"line_number":230,"context_line":"    priority: 2000"},{"line_number":231,"context_line":"    enabled: \"{{ kolla_openstack_custom_config_merge_configs_enabled | bool }}\""}],"source_content_type":"text/x-yaml","patch_set":18,"id":"03a8d79b_5780f2ab","line":228,"updated":"2023-04-19 14:10:26.000000000","message":"Possible exception: *-wsgi.conf","commit_id":"3d7d5d2551496862564161670bc841e19890e867"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"554e600a7fe5c4b51d252d1bc41dd4d7b4627850","unresolved":false,"context_lines":[{"line_number":225,"context_line":"    strategy: \"{{ kolla_openstack_custom_config_ini_merge_strategy_default }}\""},{"line_number":226,"context_line":"    priority: 2000"},{"line_number":227,"context_line":"    enabled: \"{{ kolla_openstack_custom_config_merge_configs_enabled | bool }}\""},{"line_number":228,"context_line":"  - glob: \"*.conf\""},{"line_number":229,"context_line":"    strategy: \"{{ kolla_openstack_custom_config_ini_merge_strategy_default }}\""},{"line_number":230,"context_line":"    priority: 2000"},{"line_number":231,"context_line":"    enabled: \"{{ kolla_openstack_custom_config_merge_configs_enabled | bool }}\""}],"source_content_type":"text/x-yaml","patch_set":18,"id":"56819e93_ef36da99","line":228,"in_reply_to":"03a8d79b_5780f2ab","updated":"2023-04-19 14:11:14.000000000","message":"Done","commit_id":"3d7d5d2551496862564161670bc841e19890e867"}],"ansible/roles/kolla-openstack/molecule/enable-everything/tests/test_default.py":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"c6fbeade78a9beb71889da20426fd6c122193328","unresolved":true,"context_lines":[{"line_number":85,"context_line":"     \u0027nova.conf\u0027,"},{"line_number":86,"context_line":"     \u0027octavia.conf\u0027,"},{"line_number":87,"context_line":"     \u0027sahara.conf\u0027,"},{"line_number":88,"context_line":"     \u0027backup.my.cnf\u0027,"},{"line_number":89,"context_line":"     \u0027zookeeper.cfg\u0027])"},{"line_number":90,"context_line":"def test_service_ini_file(host, path):"},{"line_number":91,"context_line":"    # TODO(mgoddard): Check more of config file contents."}],"source_content_type":"text/x-python","patch_set":9,"id":"7a39e4ed_b03283ac","side":"PARENT","line":88,"range":{"start_line":88,"start_character":6,"end_line":88,"end_character":21},"updated":"2021-08-10 14:45:41.000000000","message":"Looks like it\u0027s missing from the include list, and was never properly working. Might be nice to fix it here though.","commit_id":"2545155a8679025f488979d54212bef07b6b4eb5"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"53fc2723ed7db3a6b0cf53036c6bdbfecf21df3e","unresolved":false,"context_lines":[{"line_number":85,"context_line":"     \u0027nova.conf\u0027,"},{"line_number":86,"context_line":"     \u0027octavia.conf\u0027,"},{"line_number":87,"context_line":"     \u0027sahara.conf\u0027,"},{"line_number":88,"context_line":"     \u0027backup.my.cnf\u0027,"},{"line_number":89,"context_line":"     \u0027zookeeper.cfg\u0027])"},{"line_number":90,"context_line":"def test_service_ini_file(host, path):"},{"line_number":91,"context_line":"    # TODO(mgoddard): Check more of config file contents."}],"source_content_type":"text/x-python","patch_set":9,"id":"91def4ae_430fcb43","side":"PARENT","line":88,"range":{"start_line":88,"start_character":6,"end_line":88,"end_character":21},"in_reply_to":"7a39e4ed_b03283ac","updated":"2022-09-15 08:42:46.000000000","message":"Done","commit_id":"2545155a8679025f488979d54212bef07b6b4eb5"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"c6fbeade78a9beb71889da20426fd6c122193328","unresolved":true,"context_lines":[{"line_number":61,"context_line":"@pytest.mark.parametrize("},{"line_number":62,"context_line":"    \u0027path\u0027,"},{"line_number":63,"context_line":"    [\u0027ironic/ironic-agent.initramfs\u0027,"},{"line_number":64,"context_line":"     \u0027ironic/ironic-agent.kernel\u0027])"},{"line_number":65,"context_line":"def test_service_non_ini_file(host, path):"},{"line_number":66,"context_line":"    # TODO(mgoddard): Check config file contents."},{"line_number":67,"context_line":"    path \u003d os.path.join(\u0027/etc/kolla/config\u0027, path)"}],"source_content_type":"text/x-python","patch_set":9,"id":"b5ce0d74_f07045ad","line":64,"updated":"2021-08-10 14:45:41.000000000","message":"These are untemplated files. How about testing the fluentd configs which are templated but not ini or yaml?","commit_id":"2abee026c1e44e89d4b3f9370aa0fa4583c06c94"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"80d7ef53ff4f267ae3e6723317c3f126a0516fe0","unresolved":false,"context_lines":[{"line_number":61,"context_line":"@pytest.mark.parametrize("},{"line_number":62,"context_line":"    \u0027path\u0027,"},{"line_number":63,"context_line":"    [\u0027ironic/ironic-agent.initramfs\u0027,"},{"line_number":64,"context_line":"     \u0027ironic/ironic-agent.kernel\u0027])"},{"line_number":65,"context_line":"def test_service_non_ini_file(host, path):"},{"line_number":66,"context_line":"    # TODO(mgoddard): Check config file contents."},{"line_number":67,"context_line":"    path \u003d os.path.join(\u0027/etc/kolla/config\u0027, path)"}],"source_content_type":"text/x-python","patch_set":9,"id":"f44ca491_b26bc242","line":64,"in_reply_to":"2f5a6993_52a52772","updated":"2022-09-15 09:33:55.000000000","message":"Done","commit_id":"2abee026c1e44e89d4b3f9370aa0fa4583c06c94"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"53fc2723ed7db3a6b0cf53036c6bdbfecf21df3e","unresolved":true,"context_lines":[{"line_number":61,"context_line":"@pytest.mark.parametrize("},{"line_number":62,"context_line":"    \u0027path\u0027,"},{"line_number":63,"context_line":"    [\u0027ironic/ironic-agent.initramfs\u0027,"},{"line_number":64,"context_line":"     \u0027ironic/ironic-agent.kernel\u0027])"},{"line_number":65,"context_line":"def test_service_non_ini_file(host, path):"},{"line_number":66,"context_line":"    # TODO(mgoddard): Check config file contents."},{"line_number":67,"context_line":"    path \u003d os.path.join(\u0027/etc/kolla/config\u0027, path)"}],"source_content_type":"text/x-python","patch_set":9,"id":"2f5a6993_52a52772","line":64,"in_reply_to":"b5ce0d74_f07045ad","updated":"2022-09-15 08:42:46.000000000","message":"I\u0027ve add a test for fluentd config","commit_id":"2abee026c1e44e89d4b3f9370aa0fa4583c06c94"}],"ansible/roles/kolla-openstack/tasks/config.yml":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"c6fbeade78a9beb71889da20426fd6c122193328","unresolved":true,"context_lines":[{"line_number":66,"context_line":"  # NOTE: .copy is ambiguous with copy method"},{"line_number":67,"context_line":"  with_items: \"{{ kolla_custom_config_info[\u0027copy\u0027] }}\""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"- name: Ensure merged ini extra configuration files exist"},{"line_number":70,"context_line":"  merge_configs:"},{"line_number":71,"context_line":"    sources: \"{{ item.sources }}\""},{"line_number":72,"context_line":"    dest: \"{{ item.dest }}\""},{"line_number":73,"context_line":"    mode: 0640"},{"line_number":74,"context_line":"  with_items: \"{{ kolla_custom_config_info.merge_ini }}\""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"- name: Ensure merged yaml extra configuration files exist"},{"line_number":77,"context_line":"  merge_yaml:"},{"line_number":78,"context_line":"    sources: \"{{ item.sources }}\""},{"line_number":79,"context_line":"    dest: \"{{ item.dest }}\""},{"line_number":80,"context_line":"    mode: 0640"},{"line_number":81,"context_line":"  with_items: \"{{ kolla_custom_config_info.merge_yaml }}\""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"- name: Ensure unnecessary extra configuration files are absent"},{"line_number":84,"context_line":"  file:"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"c97a7115_3ca9167c","line":81,"range":{"start_line":69,"start_character":0,"end_line":81,"end_character":57},"updated":"2021-08-10 14:45:41.000000000","message":"A slight behaviour change here is that previously it was possible to render an INI/YAML file to a non-INI/YAML jinja template which would be templated by Kolla ansible. Now, while the file we give to Kolla may still be jinja formatted, it must be valid INI/YAML.\n\nI suppose your globs provide a way to get the old behaviour.","commit_id":"2abee026c1e44e89d4b3f9370aa0fa4583c06c94"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"8740e89dc9f506f7f8639d90e0bc420a26c71fa1","unresolved":false,"context_lines":[{"line_number":66,"context_line":"  # NOTE: .copy is ambiguous with copy method"},{"line_number":67,"context_line":"  with_items: \"{{ kolla_custom_config_info[\u0027copy\u0027] }}\""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"- name: Ensure merged ini extra configuration files exist"},{"line_number":70,"context_line":"  merge_configs:"},{"line_number":71,"context_line":"    sources: \"{{ item.sources }}\""},{"line_number":72,"context_line":"    dest: \"{{ item.dest }}\""},{"line_number":73,"context_line":"    mode: 0640"},{"line_number":74,"context_line":"  with_items: \"{{ kolla_custom_config_info.merge_ini }}\""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"- name: Ensure merged yaml extra configuration files exist"},{"line_number":77,"context_line":"  merge_yaml:"},{"line_number":78,"context_line":"    sources: \"{{ item.sources }}\""},{"line_number":79,"context_line":"    dest: \"{{ item.dest }}\""},{"line_number":80,"context_line":"    mode: 0640"},{"line_number":81,"context_line":"  with_items: \"{{ kolla_custom_config_info.merge_yaml }}\""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"- name: Ensure unnecessary extra configuration files are absent"},{"line_number":84,"context_line":"  file:"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"08ae989e_60b34b53","line":81,"range":{"start_line":69,"start_character":0,"end_line":81,"end_character":57},"in_reply_to":"457d7148_158f627c","updated":"2023-04-19 14:10:26.000000000","message":"Done","commit_id":"2abee026c1e44e89d4b3f9370aa0fa4583c06c94"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"80d7ef53ff4f267ae3e6723317c3f126a0516fe0","unresolved":true,"context_lines":[{"line_number":66,"context_line":"  # NOTE: .copy is ambiguous with copy method"},{"line_number":67,"context_line":"  with_items: \"{{ kolla_custom_config_info[\u0027copy\u0027] }}\""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"- name: Ensure merged ini extra configuration files exist"},{"line_number":70,"context_line":"  merge_configs:"},{"line_number":71,"context_line":"    sources: \"{{ item.sources }}\""},{"line_number":72,"context_line":"    dest: \"{{ item.dest }}\""},{"line_number":73,"context_line":"    mode: 0640"},{"line_number":74,"context_line":"  with_items: \"{{ kolla_custom_config_info.merge_ini }}\""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"- name: Ensure merged yaml extra configuration files exist"},{"line_number":77,"context_line":"  merge_yaml:"},{"line_number":78,"context_line":"    sources: \"{{ item.sources }}\""},{"line_number":79,"context_line":"    dest: \"{{ item.dest }}\""},{"line_number":80,"context_line":"    mode: 0640"},{"line_number":81,"context_line":"  with_items: \"{{ kolla_custom_config_info.merge_yaml }}\""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"- name: Ensure unnecessary extra configuration files are absent"},{"line_number":84,"context_line":"  file:"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"457d7148_158f627c","line":81,"range":{"start_line":69,"start_character":0,"end_line":81,"end_character":57},"in_reply_to":"c97a7115_3ca9167c","updated":"2022-09-15 09:33:55.000000000","message":"I\u0027ve made the default strategy \u0027concat\u0027 which is similar to the old behaviour. I think the old logic was (using ml2_conf.ini as an example):\n\n- Set kolla_extra_neutron_ml2 using lookup(\u0027template\u0027, ..)\n- ml2_conf.ini templates out kolla_extra_neutron_ml2 below kayobe default options i.e custom options are appended without any merging.","commit_id":"2abee026c1e44e89d4b3f9370aa0fa4583c06c94"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"8740e89dc9f506f7f8639d90e0bc420a26c71fa1","unresolved":true,"context_lines":[{"line_number":23,"context_line":"  loop_control:"},{"line_number":24,"context_line":"    label: \"{{ item.dest }}\""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"- name: Make destination directory for Nova certificates"},{"line_number":27,"context_line":"  file:"},{"line_number":28,"context_line":"    state: directory"},{"line_number":29,"context_line":"    path: \"{{ kolla_node_custom_config_path }}/nova/nova-libvirt/\""},{"line_number":30,"context_line":"    recurse: true"},{"line_number":31,"context_line":"  when: kolla_enable_nova | bool and kolla_libvirt_tls | bool"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"- name: Copy client TLS certificates for Nova"},{"line_number":34,"context_line":"  vars:"},{"line_number":35,"context_line":"    certificates:"},{"line_number":36,"context_line":"      - clientcert.pem"},{"line_number":37,"context_line":"      - clientkey.pem"},{"line_number":38,"context_line":"      - cacert.pem"},{"line_number":39,"context_line":"  copy:"},{"line_number":40,"context_line":"    src: \"{{ kolla_nova_libvirt_certificates_src }}/{{ item }}\""},{"line_number":41,"context_line":"    dest: \"{{ kolla_node_custom_config_path }}/nova/nova-libvirt/{{ item }}\""},{"line_number":42,"context_line":"  loop: \"{{ certificates if kolla_enable_nova | bool and kolla_libvirt_tls | bool else [] }}\""},{"line_number":43,"context_line":"  register: client_certs_result"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"- name: Copy server TLS certificates for Nova"},{"line_number":46,"context_line":"  vars:"},{"line_number":47,"context_line":"    certificates:"},{"line_number":48,"context_line":"      - servercert.pem"},{"line_number":49,"context_line":"      - serverkey.pem"},{"line_number":50,"context_line":"  copy:"},{"line_number":51,"context_line":"    src: \"{{ kolla_nova_libvirt_certificates_src }}/{{ item }}\""},{"line_number":52,"context_line":"    dest: \"{{ kolla_node_custom_config_path }}/nova/nova-libvirt/{{ item }}\""},{"line_number":53,"context_line":"  loop: \"{{ certificates if kolla_enable_nova | bool and kolla_enable_nova_libvirt_container | bool and kolla_libvirt_tls | bool else [] }}\""},{"line_number":54,"context_line":"  register: server_certs_result"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"# We support a fairly flexible mechanism of dropping config file templates into"},{"line_number":57,"context_line":"# an \u0027extra\u0027 config directory, and passing these through to kolla-ansible. We"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"a6984786_7f1313bc","line":54,"range":{"start_line":26,"start_character":0,"end_line":54,"end_character":31},"updated":"2023-04-19 14:10:26.000000000","message":"Wondering why we need this special logic?","commit_id":"3d7d5d2551496862564161670bc841e19890e867"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"554e600a7fe5c4b51d252d1bc41dd4d7b4627850","unresolved":false,"context_lines":[{"line_number":23,"context_line":"  loop_control:"},{"line_number":24,"context_line":"    label: \"{{ item.dest }}\""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"- name: Make destination directory for Nova certificates"},{"line_number":27,"context_line":"  file:"},{"line_number":28,"context_line":"    state: directory"},{"line_number":29,"context_line":"    path: \"{{ kolla_node_custom_config_path }}/nova/nova-libvirt/\""},{"line_number":30,"context_line":"    recurse: true"},{"line_number":31,"context_line":"  when: kolla_enable_nova | bool and kolla_libvirt_tls | bool"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"- name: Copy client TLS certificates for Nova"},{"line_number":34,"context_line":"  vars:"},{"line_number":35,"context_line":"    certificates:"},{"line_number":36,"context_line":"      - clientcert.pem"},{"line_number":37,"context_line":"      - clientkey.pem"},{"line_number":38,"context_line":"      - cacert.pem"},{"line_number":39,"context_line":"  copy:"},{"line_number":40,"context_line":"    src: \"{{ kolla_nova_libvirt_certificates_src }}/{{ item }}\""},{"line_number":41,"context_line":"    dest: \"{{ kolla_node_custom_config_path }}/nova/nova-libvirt/{{ item }}\""},{"line_number":42,"context_line":"  loop: \"{{ certificates if kolla_enable_nova | bool and kolla_libvirt_tls | bool else [] }}\""},{"line_number":43,"context_line":"  register: client_certs_result"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"- name: Copy server TLS certificates for Nova"},{"line_number":46,"context_line":"  vars:"},{"line_number":47,"context_line":"    certificates:"},{"line_number":48,"context_line":"      - servercert.pem"},{"line_number":49,"context_line":"      - serverkey.pem"},{"line_number":50,"context_line":"  copy:"},{"line_number":51,"context_line":"    src: \"{{ kolla_nova_libvirt_certificates_src }}/{{ item }}\""},{"line_number":52,"context_line":"    dest: \"{{ kolla_node_custom_config_path }}/nova/nova-libvirt/{{ item }}\""},{"line_number":53,"context_line":"  loop: \"{{ certificates if kolla_enable_nova | bool and kolla_enable_nova_libvirt_container | bool and kolla_libvirt_tls | bool else [] }}\""},{"line_number":54,"context_line":"  register: server_certs_result"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"# We support a fairly flexible mechanism of dropping config file templates into"},{"line_number":57,"context_line":"# an \u0027extra\u0027 config directory, and passing these through to kolla-ansible. We"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"da2f4f9e_e1f3fa06","line":54,"range":{"start_line":26,"start_character":0,"end_line":54,"end_character":31},"in_reply_to":"a6984786_7f1313bc","updated":"2023-04-19 14:11:14.000000000","message":"Done","commit_id":"3d7d5d2551496862564161670bc841e19890e867"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"4d7d528fb4d1cb2c07628620ce985046f23f06fd","unresolved":false,"context_lines":[{"line_number":23,"context_line":"  loop_control:"},{"line_number":24,"context_line":"    label: \"{{ item.dest }}\""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"- name: Make destination directory for Nova certificates"},{"line_number":27,"context_line":"  file:"},{"line_number":28,"context_line":"    state: directory"},{"line_number":29,"context_line":"    path: \"{{ kolla_node_custom_config_path }}/nova/nova-libvirt/\""},{"line_number":30,"context_line":"    recurse: true"},{"line_number":31,"context_line":"  when: kolla_enable_nova | bool and kolla_libvirt_tls | bool"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"- name: Copy client TLS certificates for Nova"},{"line_number":34,"context_line":"  vars:"},{"line_number":35,"context_line":"    certificates:"},{"line_number":36,"context_line":"      - clientcert.pem"},{"line_number":37,"context_line":"      - clientkey.pem"},{"line_number":38,"context_line":"      - cacert.pem"},{"line_number":39,"context_line":"  copy:"},{"line_number":40,"context_line":"    src: \"{{ kolla_nova_libvirt_certificates_src }}/{{ item }}\""},{"line_number":41,"context_line":"    dest: \"{{ kolla_node_custom_config_path }}/nova/nova-libvirt/{{ item }}\""},{"line_number":42,"context_line":"  loop: \"{{ certificates if kolla_enable_nova | bool and kolla_libvirt_tls | bool else [] }}\""},{"line_number":43,"context_line":"  register: client_certs_result"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"- name: Copy server TLS certificates for Nova"},{"line_number":46,"context_line":"  vars:"},{"line_number":47,"context_line":"    certificates:"},{"line_number":48,"context_line":"      - servercert.pem"},{"line_number":49,"context_line":"      - serverkey.pem"},{"line_number":50,"context_line":"  copy:"},{"line_number":51,"context_line":"    src: \"{{ kolla_nova_libvirt_certificates_src }}/{{ item }}\""},{"line_number":52,"context_line":"    dest: \"{{ kolla_node_custom_config_path }}/nova/nova-libvirt/{{ item }}\""},{"line_number":53,"context_line":"  loop: \"{{ certificates if kolla_enable_nova | bool and kolla_enable_nova_libvirt_container | bool and kolla_libvirt_tls | bool else [] }}\""},{"line_number":54,"context_line":"  register: server_certs_result"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"# We support a fairly flexible mechanism of dropping config file templates into"},{"line_number":57,"context_line":"# an \u0027extra\u0027 config directory, and passing these through to kolla-ansible. We"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"3e773a23_77ab757d","line":54,"range":{"start_line":26,"start_character":0,"end_line":54,"end_character":31},"in_reply_to":"da2f4f9e_e1f3fa06","updated":"2023-04-19 14:14:39.000000000","message":"(It\u0027s because they\u0027re under a different source directory)","commit_id":"3d7d5d2551496862564161670bc841e19890e867"}],"ansible/roles/kolla-openstack/vars/main.yml":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"c6fbeade78a9beb71889da20426fd6c122193328","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# An internal variable used for cleaning files from the generated config"},{"line_number":4,"context_line":"# directory. Should not be exposed as we may wish to change the cleanup"},{"line_number":5,"context_line":"# mechanism to something more robust."},{"line_number":6,"context_line":"_kolla_openstack_custom_config_cleanup_ignore_globs:"},{"line_number":7,"context_line":"  - ironic/ironic-agent.initramfs"},{"line_number":8,"context_line":"  - ironic/ironic-agent.kernel"},{"line_number":9,"context_line":"  - neutron/ml2_conf.ini"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"ac1fa73c_028c7d58","line":9,"range":{"start_line":3,"start_character":0,"end_line":9,"end_character":24},"updated":"2021-08-10 14:45:41.000000000","message":"I don\u0027t see why this is necessary. These files will match as sources, meaning they will be removed from the list of files to delete.","commit_id":"2abee026c1e44e89d4b3f9370aa0fa4583c06c94"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"53fc2723ed7db3a6b0cf53036c6bdbfecf21df3e","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# An internal variable used for cleaning files from the generated config"},{"line_number":4,"context_line":"# directory. Should not be exposed as we may wish to change the cleanup"},{"line_number":5,"context_line":"# mechanism to something more robust."},{"line_number":6,"context_line":"_kolla_openstack_custom_config_cleanup_ignore_globs:"},{"line_number":7,"context_line":"  - ironic/ironic-agent.initramfs"},{"line_number":8,"context_line":"  - ironic/ironic-agent.kernel"},{"line_number":9,"context_line":"  - neutron/ml2_conf.ini"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"f37a6a7d_3edafab0","line":9,"range":{"start_line":3,"start_character":0,"end_line":9,"end_character":24},"in_reply_to":"ac1fa73c_028c7d58","updated":"2022-09-15 08:42:46.000000000","message":"The ramdisk and kernel are downloaded to etc/kolla in a separate task. I forget the reason for ml2_conf.ini, but it comes from the original:\n\n  - src: \"{{ kolla_extra_config_path }}/neutron\"\n    dest: \"{{ kolla_node_custom_config_path }}/neutron\"\n    patterns: \"*\"\n    enabled: \"{{ kolla_enable_neutron }}\"\n    ignore:\n      # These are templated by kayobe, so don\u0027t remove them.\n      - ml2_conf.ini\n\nPossibly some similarly special behaviour for this file?","commit_id":"2abee026c1e44e89d4b3f9370aa0fa4583c06c94"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"99c2bdc59ef448772e97686307621777f349465f","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# An internal variable used for cleaning files from the generated config"},{"line_number":4,"context_line":"# directory. Should not be exposed as we may wish to change the cleanup"},{"line_number":5,"context_line":"# mechanism to something more robust."},{"line_number":6,"context_line":"_kolla_openstack_custom_config_cleanup_ignore_globs:"},{"line_number":7,"context_line":"  - ironic/ironic-agent.initramfs"},{"line_number":8,"context_line":"  - ironic/ironic-agent.kernel"},{"line_number":9,"context_line":"  - neutron/ml2_conf.ini"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"f47115b3_cd5a0881","line":9,"range":{"start_line":3,"start_character":0,"end_line":9,"end_character":24},"in_reply_to":"f37a6a7d_3edafab0","updated":"2023-03-07 10:23:37.000000000","message":"I\u0027ve removed it.","commit_id":"2abee026c1e44e89d4b3f9370aa0fa4583c06c94"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"8740e89dc9f506f7f8639d90e0bc420a26c71fa1","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# An internal variable used for cleaning files from the generated config"},{"line_number":4,"context_line":"# directory. Should not be exposed as we may wish to change the cleanup"},{"line_number":5,"context_line":"# mechanism to something more robust."},{"line_number":6,"context_line":"_kolla_openstack_custom_config_cleanup_ignore_globs:"},{"line_number":7,"context_line":"  - ironic/ironic-agent.initramfs"},{"line_number":8,"context_line":"  - ironic/ironic-agent.kernel"},{"line_number":9,"context_line":"  - neutron/ml2_conf.ini"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"bd44acac_f0bdf35e","line":9,"range":{"start_line":3,"start_character":0,"end_line":9,"end_character":24},"in_reply_to":"f47115b3_cd5a0881","updated":"2023-04-19 14:10:26.000000000","message":"Done","commit_id":"2abee026c1e44e89d4b3f9370aa0fa4583c06c94"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"945f57e609ed711ff484470f352aaec81612304e","unresolved":true,"context_lines":[{"line_number":150,"context_line":"    dest: \"{{ kolla_node_custom_config_path }}/neutron\""},{"line_number":151,"context_line":"    patterns: \"*\""},{"line_number":152,"context_line":"    enabled: \"{{ kolla_enable_neutron }}\""},{"line_number":153,"context_line":"    ignore:"},{"line_number":154,"context_line":"      # These are templated by kayobe, so don\u0027t remove them."},{"line_number":155,"context_line":"      - ml2_conf.ini"},{"line_number":156,"context_line":"  # Nova."},{"line_number":157,"context_line":"  - src: \"{{ kolla_extra_config_path }}/nova\""},{"line_number":158,"context_line":"    dest: \"{{ kolla_node_custom_config_path }}/nova\""}],"source_content_type":"text/x-yaml","patch_set":22,"id":"96fe384f_7de5b206","side":"PARENT","line":155,"range":{"start_line":153,"start_character":0,"end_line":155,"end_character":20},"updated":"2023-05-30 15:45:06.000000000","message":"Have we lost this or is it still working the same?","commit_id":"ed76f1987ce0d204480e7c3b3fc3dd184000b23d"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"e108e6ae16e213884f53ee95156fdf2b8c17c0de","unresolved":false,"context_lines":[{"line_number":150,"context_line":"    dest: \"{{ kolla_node_custom_config_path }}/neutron\""},{"line_number":151,"context_line":"    patterns: \"*\""},{"line_number":152,"context_line":"    enabled: \"{{ kolla_enable_neutron }}\""},{"line_number":153,"context_line":"    ignore:"},{"line_number":154,"context_line":"      # These are templated by kayobe, so don\u0027t remove them."},{"line_number":155,"context_line":"      - ml2_conf.ini"},{"line_number":156,"context_line":"  # Nova."},{"line_number":157,"context_line":"  - src: \"{{ kolla_extra_config_path }}/nova\""},{"line_number":158,"context_line":"    dest: \"{{ kolla_node_custom_config_path }}/nova\""}],"source_content_type":"text/x-yaml","patch_set":22,"id":"a5238232_4d92a4fe","side":"PARENT","line":155,"range":{"start_line":153,"start_character":0,"end_line":155,"end_character":20},"in_reply_to":"96fe384f_7de5b206","updated":"2023-05-30 19:17:57.000000000","message":"I believe the special case is no longer required because every file supports merging between templates in the kolla-openstack role, base kayobe config and env config.\n\nGenerated config looks as expected: https://2a5c2cbd9d7adf274eb4-5d50e8ef24c23b6b3512cdd707b25e49.ssl.cf2.rackcdn.com/782749/25/check/kayobe-overcloud-rocky9/ddb1b20/primary/kolla_configs/config/neutron/ml2_conf.ini","commit_id":"ed76f1987ce0d204480e7c3b3fc3dd184000b23d"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"f6fc5d1e6cbd581403b53b31f92fcbc8a567d2b8","unresolved":true,"context_lines":[{"line_number":8,"context_line":"    enabled: \"{{ kolla_enable_ironic | bool }}\""},{"line_number":9,"context_line":"  - glob: ironic/ironic-agent.kernel"},{"line_number":10,"context_line":"    enabled: \"{{ kolla_enable_ironic | bool }}\""},{"line_number":11,"context_line":"  - glob: nova/nova-libvirt/server*.pem"},{"line_number":12,"context_line":"    enabled: \"{{ kolla_enable_nova | bool and kolla_enable_nova_libvirt_container | bool and kolla_libvirt_tls | bool }}\""},{"line_number":13,"context_line":"  - glob: nova/nova-libvirt/client*.pem"},{"line_number":14,"context_line":"    enabled: \"{{ kolla_enable_nova | bool and kolla_libvirt_tls | bool }}\""}],"source_content_type":"text/x-yaml","patch_set":25,"id":"a3797b41_8950bff9","line":11,"updated":"2023-09-01 16:02:23.000000000","message":"Think we might need to add the client certificates here i.e the ones defined here:\n\nhttps://review.opendev.org/c/openstack/kayobe/+/782749/25/ansible/roles/kolla-openstack/tasks/config.yml#34\n\nThis stops them from being deleted by the \"Ensure unnecessary files are deleted\" task.","commit_id":"428ef10fa4d4a281f0c690876fc3cbfff41c2bbb"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"5e22858185cd0f2ace363bfb289dcec58d0ba200","unresolved":false,"context_lines":[{"line_number":8,"context_line":"    enabled: \"{{ kolla_enable_ironic | bool }}\""},{"line_number":9,"context_line":"  - glob: ironic/ironic-agent.kernel"},{"line_number":10,"context_line":"    enabled: \"{{ kolla_enable_ironic | bool }}\""},{"line_number":11,"context_line":"  - glob: nova/nova-libvirt/server*.pem"},{"line_number":12,"context_line":"    enabled: \"{{ kolla_enable_nova | bool and kolla_enable_nova_libvirt_container | bool and kolla_libvirt_tls | bool }}\""},{"line_number":13,"context_line":"  - glob: nova/nova-libvirt/client*.pem"},{"line_number":14,"context_line":"    enabled: \"{{ kolla_enable_nova | bool and kolla_libvirt_tls | bool }}\""}],"source_content_type":"text/x-yaml","patch_set":25,"id":"320f2e22_ecae7472","line":11,"in_reply_to":"a3797b41_8950bff9","updated":"2023-09-01 16:20:44.000000000","message":"Ignore this. This was me misreading gerrit output... Just need to scroll down 😄","commit_id":"428ef10fa4d4a281f0c690876fc3cbfff41c2bbb"}],"requirements.txt":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"c6fbeade78a9beb71889da20426fd6c122193328","unresolved":true,"context_lines":[{"line_number":6,"context_line":"selinux # MIT"},{"line_number":7,"context_line":"# INI parsing"},{"line_number":8,"context_line":"oslo.config\u003e\u003d5.2.0 # Apache-2.0"},{"line_number":9,"context_line":"wcmatch\u003e\u003d8.2\u003c\u003d9.0"}],"source_content_type":"text/plain","patch_set":8,"id":"c09fd033_359dc3d8","line":9,"updated":"2021-08-10 14:45:41.000000000","message":"License please","commit_id":"425852a7f6a79bcd19a8b7c4d0dcb0e67c9e28cd"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"53fc2723ed7db3a6b0cf53036c6bdbfecf21df3e","unresolved":false,"context_lines":[{"line_number":6,"context_line":"selinux # MIT"},{"line_number":7,"context_line":"# INI parsing"},{"line_number":8,"context_line":"oslo.config\u003e\u003d5.2.0 # Apache-2.0"},{"line_number":9,"context_line":"wcmatch\u003e\u003d8.2\u003c\u003d9.0"}],"source_content_type":"text/plain","patch_set":8,"id":"170b4658_e58b19cd","line":9,"in_reply_to":"c09fd033_359dc3d8","updated":"2022-09-15 08:42:46.000000000","message":"Done","commit_id":"425852a7f6a79bcd19a8b7c4d0dcb0e67c9e28cd"}]}
