diff options
14 files changed, 56 insertions, 19 deletions
diff --git a/ansible/module_utils/kolla_container_worker.py b/ansible/module_utils/kolla_container_worker.py index 4c7bedffc..bf0c20b25 100644 --- a/ansible/module_utils/kolla_container_worker.py +++ b/ansible/module_utils/kolla_container_worker.py @@ -316,7 +316,10 @@ class ContainerWorker(ABC): def compare_labels(self, container_info): new_labels = self.params.get('labels') current_labels = container_info['Config'].get('Labels', dict()) - image_labels = self.check_image().get('Labels', dict()) + image_info = self.check_image() + if not image_info: + return False + image_labels = image_info.get('Labels', dict()) for k, v in image_labels.items(): if k in new_labels: if v != new_labels[k]: diff --git a/ansible/module_utils/kolla_docker_worker.py b/ansible/module_utils/kolla_docker_worker.py index 70b6af39b..f488bab66 100644 --- a/ansible/module_utils/kolla_docker_worker.py +++ b/ansible/module_utils/kolla_docker_worker.py @@ -77,6 +77,7 @@ class DockerWorker(ContainerWorker): for image_name in repo_tags: if image_name == find_image: return image + return dict() def check_volume(self): for vol in self.dc.volumes()['Volumes'] or list(): diff --git a/ansible/roles/grafana/defaults/main.yml b/ansible/roles/grafana/defaults/main.yml index e7aac005a..402519d78 100644 --- a/ansible/roles/grafana/defaults/main.yml +++ b/ansible/roles/grafana/defaults/main.yml @@ -122,6 +122,11 @@ grafana_start_first_node_retries: 12 grafana_remove_old_volume: true +grafana_custom_home_dashboard: >- + {{ 'grafana_home_dashboard.json' in + check_extra_conf_grafana.files | default([], true) | + map(attribute='path') | map('basename') }} + ############ # Prometheus ############ diff --git a/ansible/roles/grafana/tasks/post_config.yml b/ansible/roles/grafana/tasks/post_config.yml index e90a2ab47..949ef31f6 100644 --- a/ansible/roles/grafana/tasks/post_config.yml +++ b/ansible/roles/grafana/tasks/post_config.yml @@ -41,20 +41,3 @@ failed_when: response.status not in [200, 409] or response.status == 409 and ("name already exists" not in response.json.message | default("")) with_dict: "{{ grafana_data_sources }}" when: item.value.enabled | bool - -- name: Disable Getting Started panel - become: true - kolla_toolbox: - container_engine: "{{ kolla_container_engine }}" - module_name: uri - module_args: - url: "{{ grafana_internal_endpoint }}/api/user/helpflags/1" - method: PUT - user: "{{ grafana_admin_username }}" - password: "{{ grafana_admin_password }}" - force_basic_auth: true - status_code: 200 - register: grafana_response - changed_when: grafana_response.status == 200 - run_once: true - when: "'grafana_home_dashboard.json' in check_extra_conf_grafana.files | map(attribute='path') | map('basename')" diff --git a/ansible/roles/grafana/templates/grafana.ini.j2 b/ansible/roles/grafana/templates/grafana.ini.j2 index 763915796..4aae4caa5 100644 --- a/ansible/roles/grafana/templates/grafana.ini.j2 +++ b/ansible/roles/grafana/templates/grafana.ini.j2 @@ -41,3 +41,8 @@ enabled = true config_file = /etc/grafana/ldap.toml allow_sign_up = true {% endif %} + +{% if grafana_custom_home_dashboard | bool %} +[dashboards] +default_home_dashboard_path = /usr/share/grafana/public/dashboards/home.json +{% endif %} diff --git a/ansible/roles/kolla_toolbox/handlers/main.yml b/ansible/roles/kolla_toolbox/handlers/main.yml index 73db9be9d..8acaece93 100644 --- a/ansible/roles/kolla_toolbox/handlers/main.yml +++ b/ansible/roles/kolla_toolbox/handlers/main.yml @@ -23,3 +23,7 @@ become: true ansible.builtin.command: "{{ kolla_container_engine }} exec -t {{ service['container_name'] }} ansible --version" changed_when: false + register: result + until: result.rc == 0 + retries: 5 + delay: 5 diff --git a/ansible/roles/neutron/templates/ml2_conf.ini.j2 b/ansible/roles/neutron/templates/ml2_conf.ini.j2 index 7a4e72bdb..5af72163a 100644 --- a/ansible/roles/neutron/templates/ml2_conf.ini.j2 +++ b/ansible/roles/neutron/templates/ml2_conf.ini.j2 @@ -40,5 +40,4 @@ ovn_nb_connection = {{ ovn_nb_connection }} ovn_sb_connection = {{ ovn_sb_connection_no_relay }} ovn_metadata_enabled = true enable_distributed_floating_ip = {{ neutron_ovn_distributed_fip | bool }} -ovn_emit_need_to_frag = true {% endif %} diff --git a/ansible/roles/rabbitmq/tasks/precheck.yml b/ansible/roles/rabbitmq/tasks/precheck.yml index a5c8f6340..827ab66ae 100644 --- a/ansible/roles/rabbitmq/tasks/precheck.yml +++ b/ansible/roles/rabbitmq/tasks/precheck.yml @@ -88,6 +88,7 @@ - "{{ kolla_certificates_dir }}/{{ inventory_hostname }}/rabbitmq-cert.pem" - "{{ kolla_certificates_dir }}/{{ inventory_hostname }}-cert.pem" - "{{ kolla_certificates_dir }}/rabbitmq-cert.pem" + - "{{ kolla_tls_backend_cert }}" when: - not kolla_externally_managed_cert | bool - rabbitmq_enable_tls | bool @@ -102,6 +103,7 @@ - "{{ kolla_certificates_dir }}/{{ inventory_hostname }}/rabbitmq-key.pem" - "{{ kolla_certificates_dir }}/{{ inventory_hostname }}-key.pem" - "{{ kolla_certificates_dir }}/rabbitmq-key.pem" + - "{{ kolla_tls_backend_key }}" when: - not kolla_externally_managed_cert | bool - rabbitmq_enable_tls | bool diff --git a/doc/source/reference/logging-and-monitoring/grafana-guide.rst b/doc/source/reference/logging-and-monitoring/grafana-guide.rst index 412ca88e1..8b896d1d8 100644 --- a/doc/source/reference/logging-and-monitoring/grafana-guide.rst +++ b/doc/source/reference/logging-and-monitoring/grafana-guide.rst @@ -90,6 +90,9 @@ sub-folders is also supported when using a custom ``provisioning.yaml`` file. Dashboards will be imported into the Grafana dashboards 'General' folder by default. +To set a custom home dashboard, place the dashboard file in +``{{ node_custom_config }}/grafana/grafana_home_dashboard.json``. + Grafana provisioner config can be altered by placing ``provisioning.yaml`` to ``{{ node_custom_config }}/grafana/`` folder. diff --git a/releasenotes/notes/bug-1889611-a89ddb10134081f4.yaml b/releasenotes/notes/bug-1889611-a89ddb10134081f4.yaml new file mode 100644 index 000000000..05cce09d8 --- /dev/null +++ b/releasenotes/notes/bug-1889611-a89ddb10134081f4.yaml @@ -0,0 +1,7 @@ +--- +fixes: + - | + Fixes image check with containers that don't exist locally. A bug in the + image comparison logic would make service-check-containers fail with + ``AttributeError: NoneType object has no attribute get`` + `LP#2166024 <https://launchpad.net/bugs/2166024>`__ diff --git a/releasenotes/notes/bug-2166048-9707508fca725bd7.yaml b/releasenotes/notes/bug-2166048-9707508fca725bd7.yaml new file mode 100644 index 000000000..0004097ab --- /dev/null +++ b/releasenotes/notes/bug-2166048-9707508fca725bd7.yaml @@ -0,0 +1,5 @@ +--- +fixes: + - | + Fixes Grafana deployment with custom home dashboard in Grafana 13.2. + `LP#2166048 <https://launchpad.net/bugs/2166048>`__ diff --git a/releasenotes/notes/fix-certificates-prechecks-5baa68cd11fbe61c.yaml b/releasenotes/notes/fix-certificates-prechecks-5baa68cd11fbe61c.yaml new file mode 100644 index 000000000..3c38e1658 --- /dev/null +++ b/releasenotes/notes/fix-certificates-prechecks-5baa68cd11fbe61c.yaml @@ -0,0 +1,8 @@ +--- +fixes: + - | + Fixes RabbitMQ precheck failing with "No TLS certificate/key provided + for RabbitMQ" when relying on the shared ``kolla_tls_backend_cert``/ + ``kolla_tls_backend_key`` fallback, which ``service-cert-copy`` already + supports but the precheck did not check for. + diff --git a/tests/kolla_container_tests/test_docker_worker.py b/tests/kolla_container_tests/test_docker_worker.py index cd351e4ef..e32da66cb 100644 --- a/tests/kolla_container_tests/test_docker_worker.py +++ b/tests/kolla_container_tests/test_docker_worker.py @@ -1251,6 +1251,12 @@ class TestAttrComp(base.BaseTestCase): self.dw = get_DockerWorker({'privileged': False}) self.assertTrue(self.dw.compare_privileged(container_info)) + def test_compare_labels_image_missing(self): + container_info = {'Config': dict(Labels={'kolla_version': '1.0.1'})} + self.dw = get_DockerWorker({'labels': {}}) + self.dw.check_image = mock.MagicMock(return_value=dict()) + self.assertFalse(self.dw.compare_labels(container_info)) + def test_compare_labels_neg(self): container_info = {'Config': dict(Labels={'kolla_version': '2.0.1'})} self.dw = get_DockerWorker({'labels': {'kolla_version': '2.0.1'}}) diff --git a/tests/kolla_container_tests/test_podman_worker.py b/tests/kolla_container_tests/test_podman_worker.py index 048a7a797..04d6d987b 100644 --- a/tests/kolla_container_tests/test_podman_worker.py +++ b/tests/kolla_container_tests/test_podman_worker.py @@ -1264,6 +1264,12 @@ class TestAttrComp(base.BaseTestCase): self.pw = get_PodmanWorker({'privileged': False}) self.assertTrue(self.pw.compare_privileged(container_info)) + def test_compare_labels_image_missing(self): + container_info = {'Config': dict(Labels={'kolla_version': '1.0.1'})} + self.pw = get_PodmanWorker({'labels': {}}) + self.pw.check_image = mock.MagicMock(return_value=dict()) + self.assertFalse(self.pw.compare_labels(container_info)) + def test_compare_labels_neg(self): container_info = {'Config': dict(Labels={'kolla_version': '2.0.1'})} self.pw = get_PodmanWorker({'labels': {'kolla_version': '2.0.1'}}) |
