From d48d3b2a7122f02c09707f0bdf4ca30d795c6eae Mon Sep 17 00:00:00 2001 From: Pierre Riteau Date: Fri, 10 Oct 2025 11:09:06 +0200 Subject: [PATCH 1/9] Bump stackhpc.libvirt-host to v1.14.0 This adds support for centos/rocky 10. Change-Id: Id9d874024279a8e26561aca0e485c310de38b434 Signed-off-by: Pierre Riteau --- .../notes/stackhpc-libvirt-host-el10-0250bdabad776c65.yaml | 5 +++++ requirements.yml | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 releasenotes/notes/stackhpc-libvirt-host-el10-0250bdabad776c65.yaml diff --git a/releasenotes/notes/stackhpc-libvirt-host-el10-0250bdabad776c65.yaml b/releasenotes/notes/stackhpc-libvirt-host-el10-0250bdabad776c65.yaml new file mode 100644 index 000000000..646925cfc --- /dev/null +++ b/releasenotes/notes/stackhpc-libvirt-host-el10-0250bdabad776c65.yaml @@ -0,0 +1,5 @@ +--- +upgrade: + - | + Bumps the ``stackhpc.libvirt-host`` role to v1.14.0 which fixes + compatibility with CentOS Stream 10 and Rocky Linux 10. diff --git a/requirements.yml b/requirements.yml index 4ad3203dc..ef419f34d 100644 --- a/requirements.yml +++ b/requirements.yml @@ -41,7 +41,7 @@ roles: - src: stackhpc.drac-facts version: 1.0.0 - src: stackhpc.libvirt-host - version: v1.12.1 + version: v1.14.0 - src: stackhpc.libvirt-vm version: v1.16.3 - src: stackhpc.luks From cdfb2ec46d2603c0e99ff208f45a42d78f64089c Mon Sep 17 00:00:00 2001 From: Will Szumski Date: Fri, 5 Sep 2025 13:00:38 +0000 Subject: [PATCH 2/9] Remove inspection store This is not used by the built-in inspector and support for deploying the standalone inspector has been removed[1]. [1] https://review.opendev.org/c/openstack/kolla-ansible/+/951864 Change-Id: I2c2872d1ae6a15afece4a46b9ff7cfe77f073f45 Signed-off-by: Will Szumski --- ansible/inspection-store.yml | 18 ------- ansible/inventory/group_vars/all/inspector | 10 ---- ansible/kolla-openstack.yml | 6 --- ansible/overcloud-extras.yml | 1 - ansible/roles/inspection-store/README.md | 40 --------------- .../roles/inspection-store/defaults/main.yml | 39 --------------- .../roles/inspection-store/handlers/main.yml | 21 -------- .../roles/inspection-store/tasks/config.yml | 18 ------- .../roles/inspection-store/tasks/deploy.yml | 3 -- .../roles/inspection-store/tasks/destroy.yml | 22 -------- ansible/roles/inspection-store/tasks/main.yml | 2 - ansible/roles/inspection-store/tasks/pull.yml | 11 ---- .../inspection-store/tasks/reconfigure.yml | 2 - .../roles/inspection-store/tasks/start.yml | 18 ------- ansible/roles/inspection-store/tasks/stop.yml | 10 ---- .../roles/inspection-store/tasks/upgrade.yml | 3 -- .../inspection-store/templates/nginx.conf | 40 --------------- .../kolla/config/ironic-inspector.conf | 50 ------------------- etc/kayobe/inspector.yml | 11 ---- ...ves-inspection-store-7d969c6200787282.yaml | 12 +++++ 20 files changed, 12 insertions(+), 325 deletions(-) delete mode 100644 ansible/inspection-store.yml delete mode 100644 ansible/roles/inspection-store/README.md delete mode 100644 ansible/roles/inspection-store/defaults/main.yml delete mode 100644 ansible/roles/inspection-store/handlers/main.yml delete mode 100644 ansible/roles/inspection-store/tasks/config.yml delete mode 100644 ansible/roles/inspection-store/tasks/deploy.yml delete mode 100644 ansible/roles/inspection-store/tasks/destroy.yml delete mode 100644 ansible/roles/inspection-store/tasks/main.yml delete mode 100644 ansible/roles/inspection-store/tasks/pull.yml delete mode 100644 ansible/roles/inspection-store/tasks/reconfigure.yml delete mode 100644 ansible/roles/inspection-store/tasks/start.yml delete mode 100644 ansible/roles/inspection-store/tasks/stop.yml delete mode 100644 ansible/roles/inspection-store/tasks/upgrade.yml delete mode 100644 ansible/roles/inspection-store/templates/nginx.conf delete mode 100644 ansible/roles/kolla-openstack/templates/kolla/config/ironic-inspector.conf create mode 100644 releasenotes/notes/removes-inspection-store-7d969c6200787282.yaml diff --git a/ansible/inspection-store.yml b/ansible/inspection-store.yml deleted file mode 100644 index d33968e6c..000000000 --- a/ansible/inspection-store.yml +++ /dev/null @@ -1,18 +0,0 @@ ---- -# Deploy/pull/reconfigure/stop/upgrade inspection data store. -# -# Follows kolla-ansible service deployment patterns. -# -# Variables: -# action: One of deploy, destroy, pull, reconfigure, upgrade - -- name: Ensure inspection store is deployed - hosts: controllers[0] - tags: - - inspection-store - roles: - - role: inspection-store - inspection_store_action: "{{ kayobe_action }}" - inspection_store_enabled: "{{ inspector_store_enabled }}" - inspection_store_port: "{{ inspector_store_port }}" - inspection_store_config_path: "{{ config_path }}/inspection-store" diff --git a/ansible/inventory/group_vars/all/inspector b/ansible/inventory/group_vars/all/inspector index bdf3df568..4497d39eb 100644 --- a/ansible/inventory/group_vars/all/inspector +++ b/ansible/inventory/group_vars/all/inspector @@ -395,13 +395,3 @@ inspector_rules: "{{ inspector_rules_default + inspector_rules_extra + (inspecto # applied. inspector_dell_switch_lldp_workaround_group: -############################################################################### -# Inspection store configuration. -# The inspection store provides a Swift-like service for storing inspection -# data which may be useful in environments without Swift. - -# Whether the inspection data store is enabled. -inspector_store_enabled: "{{ kolla_enable_ironic_inspector | bool and not kolla_enable_swift | bool }}" - -# Port on which the inspection data store should listen. -inspector_store_port: 8080 diff --git a/ansible/kolla-openstack.yml b/ansible/kolla-openstack.yml index c7b9d56a7..bb116330d 100644 --- a/ansible/kolla-openstack.yml +++ b/ansible/kolla-openstack.yml @@ -136,12 +136,6 @@ kolla_inspector_keep_ports: "{{ inspector_keep_ports }}" kolla_inspector_enable_discovery: "{{ inspector_enable_discovery }}" kolla_inspector_discovery_enroll_node_driver: "{{ inspector_discovery_enroll_node_driver }}" - # Ironic inspector swift store configuration. Currently only supports the - # 'fake' inspection store. - kolla_inspector_enable_swift: "{{ inspector_store_enabled }}" - kolla_inspector_swift_auth: - auth_type: none - endpoint_override: "http://{% raw %}{{ api_interface_address }}{% endraw %}:{{ inspector_store_port }}" kolla_inspector_ipa_host: "{{ groups['controllers_with_ironic_enabled_True'][0] }}" kolla_openstack_custom_config_paths_extra_multi_env_static: - "{{ kayobe_config_path }}" diff --git a/ansible/overcloud-extras.yml b/ansible/overcloud-extras.yml index ad16dc86b..0a5d4fa4e 100644 --- a/ansible/overcloud-extras.yml +++ b/ansible/overcloud-extras.yml @@ -8,5 +8,4 @@ # action: One of deploy, destroy, pull, reconfigure, upgrade - import_playbook: docker-registry.yml -- import_playbook: inspection-store.yml - import_playbook: opensm.yml diff --git a/ansible/roles/inspection-store/README.md b/ansible/roles/inspection-store/README.md deleted file mode 100644 index 4c9fb18e8..000000000 --- a/ansible/roles/inspection-store/README.md +++ /dev/null @@ -1,40 +0,0 @@ -Inspection Store -================ - -Ironic inspector can make use of Swift to store introspection data. Not all -OpenStack deployments feature Swift, so it may be useful to provide a minimal -HTTP interface that emulates Swift for storing ironic inspector's introspection -data. This role deploys such an interface using nginx. Note that no -authentication mechanism is provided. - -Requirements ------------- - -The host executing the role has the following requirements: - -* Docker engine -* Python ``docker >= 2.0.0`` - -Role Variables --------------- - -Dependencies ------------- - -None - -Example Playbook ----------------- - -The following playbook deploys an inspection store. - - --- - - hosts: all - - roles: - - role: inspection-store - -Author Information ------------------- - -- Mark Goddard () diff --git a/ansible/roles/inspection-store/defaults/main.yml b/ansible/roles/inspection-store/defaults/main.yml deleted file mode 100644 index 7d1997d53..000000000 --- a/ansible/roles/inspection-store/defaults/main.yml +++ /dev/null @@ -1,39 +0,0 @@ ---- -# Roughly follows kolla-ansible's service deployment patterns. - -# Action to perform. One of 'deploy', 'destroy', 'pull', 'reconfigure', -# 'stop', 'upgrade'. -inspection_store_action: deploy - -# Whether an inspection store is enabled. -inspection_store_enabled: true - -# Service deployment definition. -inspection_store_services: - inspection_store: - container_name: inspection_store - enabled: "{{ inspection_store_enabled }}" - image: "{{ inspection_store_image_full }}" - network_mode: host - volumes: - - "/etc/localtime:/etc/localtime:ro" - - "{{ inspection_store_config_path }}/nginx.conf:/etc/nginx/nginx.conf:ro" - - "inspection_store:/data" - -# The port on which the inspection store server should listen. -inspection_store_port: 8080 - -# Path in which to store inspection store server configuration. -inspection_store_config_path: "/etc/inspection-store" - -#################### -# Inspection Store -#################### -inspection_store_namespace: "library" -inspection_store: docker.io -inspection_store_image: "{{ inspection_store ~ '/' if inspection_store | default else '' }}{{ inspection_store_namespace ~ '/' if inspection_store_namespace else '' }}nginx" -inspection_store_tag: "stable" -inspection_store_image_full: "{{ inspection_store_image }}:{{ inspection_store_tag }}" - -inspection_store_restart_policy: "unless-stopped" -#inspection_store_restart_retries: diff --git a/ansible/roles/inspection-store/handlers/main.yml b/ansible/roles/inspection-store/handlers/main.yml deleted file mode 100644 index a75eed5c9..000000000 --- a/ansible/roles/inspection-store/handlers/main.yml +++ /dev/null @@ -1,21 +0,0 @@ ---- -- name: Restart inspection store container - kayobe_container: - name: "{{ item.value.container_name }}" - state: started - restart: True - # NOTE: The image argument shouldn't be required, but without it this - # handler fails on Ansible 2.3. Related bug: - # https://github.com/ansible/ansible/issues/21188. - image: "{{ item.value.image }}" - with_dict: "{{ inspection_store_services }}" - when: item.value.enabled - become: "{{ container_engine == 'podman' }}" - -- name: Ensure inspection store data directory exists - command: > - {{ container_engine }} exec {{ inspection_store_services.inspection_store.container_name }} - bash -c "mkdir -p /data/ironic-inspector && - chown nginx:nginx /data/ironic-inspector" - when: inspection_store_services.inspection_store.enabled - become: "{{ container_engine == 'podman' }}" diff --git a/ansible/roles/inspection-store/tasks/config.yml b/ansible/roles/inspection-store/tasks/config.yml deleted file mode 100644 index e798f0214..000000000 --- a/ansible/roles/inspection-store/tasks/config.yml +++ /dev/null @@ -1,18 +0,0 @@ ---- -- name: Ensure inspection store configuration path exists - file: - path: "{{ inspection_store_config_path }}" - state: directory - owner: "{{ ansible_facts.user_uid }}" - group: "{{ ansible_facts.user_gid }}" - mode: 0750 - become: True - -- name: Ensure inspection store server is configured - template: - src: nginx.conf - dest: "{{ inspection_store_config_path }}/nginx.conf" - become: True - notify: - - Restart inspection store container - - Ensure inspection store data directory exists diff --git a/ansible/roles/inspection-store/tasks/deploy.yml b/ansible/roles/inspection-store/tasks/deploy.yml deleted file mode 100644 index d1f8db5d8..000000000 --- a/ansible/roles/inspection-store/tasks/deploy.yml +++ /dev/null @@ -1,3 +0,0 @@ ---- -- include_tasks: config.yml -- include_tasks: start.yml diff --git a/ansible/roles/inspection-store/tasks/destroy.yml b/ansible/roles/inspection-store/tasks/destroy.yml deleted file mode 100644 index a311bf3e1..000000000 --- a/ansible/roles/inspection-store/tasks/destroy.yml +++ /dev/null @@ -1,22 +0,0 @@ ---- -- name: Ensure inspection store container is stopped - kayobe_container: - name: "{{ item.value.container_name }}" - state: "absent" - with_dict: "{{ inspection_store_services }}" - become: "{{ container_engine == 'podman' }}" - -- name: Ensure inspection store volumes are absent - kayobe_container_volume: - name: "{{ volume }}" - state: absent - with_subelements: - - "{{ inspection_store_services }}" - - volumes - when: "'/' not in volume" - failed_when: - - volume_result.rc != 0 - - "'no such volume' not in volume_result.stderr | lower" - vars: - volume: "{{ item.1.split(':')[0] }}" - become: "{{ container_engine == 'podman' }}" diff --git a/ansible/roles/inspection-store/tasks/main.yml b/ansible/roles/inspection-store/tasks/main.yml deleted file mode 100644 index 23541719d..000000000 --- a/ansible/roles/inspection-store/tasks/main.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -- include_tasks: "{{ inspection_store_action }}.yml" diff --git a/ansible/roles/inspection-store/tasks/pull.yml b/ansible/roles/inspection-store/tasks/pull.yml deleted file mode 100644 index 88068c305..000000000 --- a/ansible/roles/inspection-store/tasks/pull.yml +++ /dev/null @@ -1,11 +0,0 @@ ---- -- name: Pulling inspection store container image - kayobe_container_image: - name: "{{ item.value.image }}" - source: pull - state: present - with_dict: "{{ inspection_store_services }}" - when: - - item.value.enabled - - inspection_store_action != 'destroy' - become: "{{ container_engine == 'podman' }}" diff --git a/ansible/roles/inspection-store/tasks/reconfigure.yml b/ansible/roles/inspection-store/tasks/reconfigure.yml deleted file mode 100644 index f670a5b78..000000000 --- a/ansible/roles/inspection-store/tasks/reconfigure.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -- include_tasks: deploy.yml diff --git a/ansible/roles/inspection-store/tasks/start.yml b/ansible/roles/inspection-store/tasks/start.yml deleted file mode 100644 index a2735af38..000000000 --- a/ansible/roles/inspection-store/tasks/start.yml +++ /dev/null @@ -1,18 +0,0 @@ ---- -- name: Ensure inspection store container is running - kayobe_container: - image: "{{ item.value.image }}" - name: "{{ item.value.container_name }}" - ports: "{{ item.value.ports | default(omit) }}" - privileged: "{{ item.value.privileged | default(omit) }}" - read_only: "{{ item.value.read_only | default(omit) }}" - restart_policy: "{{ inspection_store_restart_policy }}" - restart_retries: "{{ inspection_store_restart_retries | default(omit) }}" - state: started - volumes: "{{ item.value.volumes }}" - network_mode: "{{ item.value.network_mode | default(omit) }}" - with_dict: "{{ inspection_store_services }}" - notify: - - Ensure inspection store data directory exists - become: "{{ container_engine == 'podman' }}" - when: item.value.enabled | bool diff --git a/ansible/roles/inspection-store/tasks/stop.yml b/ansible/roles/inspection-store/tasks/stop.yml deleted file mode 100644 index d01750c21..000000000 --- a/ansible/roles/inspection-store/tasks/stop.yml +++ /dev/null @@ -1,10 +0,0 @@ ---- -- name: Ensure inspection store container is stopped - kayobe_container: - image: "{{ item.value.image }}" - name: "{{ item.value.container_name }}" - state: "stopped" - with_dict: "{{ inspection_store_services }}" - when: - - item.value.enabled | bool - become: "{{ container_engine == 'podman' }}" diff --git a/ansible/roles/inspection-store/tasks/upgrade.yml b/ansible/roles/inspection-store/tasks/upgrade.yml deleted file mode 100644 index 99348ae91..000000000 --- a/ansible/roles/inspection-store/tasks/upgrade.yml +++ /dev/null @@ -1,3 +0,0 @@ ---- -- include_tasks: pull.yml -- include_tasks: deploy.yml diff --git a/ansible/roles/inspection-store/templates/nginx.conf b/ansible/roles/inspection-store/templates/nginx.conf deleted file mode 100644 index cea01e58d..000000000 --- a/ansible/roles/inspection-store/templates/nginx.conf +++ /dev/null @@ -1,40 +0,0 @@ -user nginx; -worker_processes 1; - -error_log /var/log/nginx/error.log warn; -pid /var/run/nginx.pid; - - -events { - worker_connections 1024; -} - - -http { - include /etc/nginx/mime.types; - default_type application/octet-stream; - - log_format main '$remote_addr - $remote_user [$time_local] "$request" ' - '$status $body_bytes_sent "$http_referer" ' - '"$http_user_agent" "$http_x_forwarded_for"'; - - access_log /var/log/nginx/access.log main; - - sendfile on; - #tcp_nopush on; - - keepalive_timeout 65; - - #gzip on; - - server { - listen {{ inspection_store_port }}; - root /data; - location /ironic-inspector { - return 200 ""; - } - location /ironic-inspector/ { - dav_methods PUT DELETE; - } - } -} diff --git a/ansible/roles/kolla-openstack/templates/kolla/config/ironic-inspector.conf b/ansible/roles/kolla-openstack/templates/kolla/config/ironic-inspector.conf deleted file mode 100644 index d085c2bec..000000000 --- a/ansible/roles/kolla-openstack/templates/kolla/config/ironic-inspector.conf +++ /dev/null @@ -1,50 +0,0 @@ -[DEFAULT] - -[processing] -{% if kolla_inspector_processing_hooks %} -# Comma-separated list of inspector processing plugins. -processing_hooks = {{ kolla_inspector_processing_hooks | join(',') }} -{% endif %} - -{% if kolla_inspector_add_ports %} -# Which MAC addresses to add as ports during introspection. One of 'all', -# 'active' or 'pxe'. -add_ports = {{ kolla_inspector_add_ports }} -{% endif %} - -{% if kolla_inspector_keep_ports %} -keep_ports = {{ kolla_inspector_keep_ports }} -{% endif %} - -# Store logs returned by the inspection ramdisk. -always_store_ramdisk_logs = True - -{% if kolla_inspector_enable_discovery %} -# Enable discovery when nodes do not exist in Ironic. -node_not_found_hook = enroll -{% endif %} - -{% if kolla_inspector_enable_swift %} -store_data = swift -{% endif %} - -{% if kolla_inspector_enable_swift %} -[swift] -{% for key, value in kolla_inspector_swift_auth.items() %} -{{ key }} = {{ value }} -{% endfor %} -{% endif %} - -{% if kolla_inspector_enable_discovery %} -[discovery] -# The driver with which to enroll newly discovered nodes in Ironic. -enroll_node_driver = {{ kolla_inspector_discovery_enroll_node_driver }} -{% endif %} - -{% if kolla_extra_inspector %} -####################### -# Extra configuration -####################### - -{{ kolla_extra_inspector }} -{% endif %} diff --git a/etc/kayobe/inspector.yml b/etc/kayobe/inspector.yml index 123481a5f..713751dfc 100644 --- a/etc/kayobe/inspector.yml +++ b/etc/kayobe/inspector.yml @@ -143,17 +143,6 @@ # applied. #inspector_dell_switch_lldp_workaround_group: -############################################################################### -# Inspection store configuration. -# The inspection store provides a Swift-like service for storing inspection -# data which may be useful in environments without Swift. - -# Whether the inspection data store is enabled. -#inspector_store_enabled: - -# Port on which the inspection data store should listen. -#inspector_store_port: - ############################################################################### # Dummy variable to allow Ansible to accept this file. workaround_ansible_issue_8743: yes diff --git a/releasenotes/notes/removes-inspection-store-7d969c6200787282.yaml b/releasenotes/notes/removes-inspection-store-7d969c6200787282.yaml new file mode 100644 index 000000000..f1634e8be --- /dev/null +++ b/releasenotes/notes/removes-inspection-store-7d969c6200787282.yaml @@ -0,0 +1,12 @@ +--- +upgrade: + - | + The inspection_store container has been removed since it was tied to the + standalone Ironic Inspector implementation and support for deploying that + service has been dropped. The new inspection implemenation built into + Ironic stores a similar set of data in the database. Prior to upgrading, + you may wish to dump any data with the ``kayobe overcloud introspection data + save`` command. After the upgrade the container should be manually removed + from the first controller using either ``docker stop inspection store && + docker rm inspection_store`` or ``sudo podman stop inspection_store && sudo + podman rm inspection_store`` From 6986fea5983268448a529d03b7babae8976cb898 Mon Sep 17 00:00:00 2001 From: Claudia Watson Date: Thu, 25 Sep 2025 15:21:54 +0100 Subject: [PATCH 3/9] Change IPA compression algorithm from default gzip to zstd -19 Updates the IPA (Ironic Python Agent) compression algorithm from the default gzip to use zstd -19 instead. This reduces the transfer size of the IPA boot ISO from the Ironic conductor to the baremetal nodes during provisioning. Change-Id: Id0938c3fef6ccb9ceb556ce68a442393eabf2624 Signed-off-by: Claudia Watson --- ansible/inventory/group_vars/all/ipa | 5 +++-- .../reference/ironic-python-agent.rst | 3 +-- etc/kayobe/ipa.yml | 4 ++-- ...sion-algorithm-to-zstd-19-b3860e0a24ca824e.yaml | 14 ++++++++++++++ 4 files changed, 20 insertions(+), 6 deletions(-) create mode 100644 releasenotes/notes/change-IPA-compression-algorithm-to-zstd-19-b3860e0a24ca824e.yaml diff --git a/ansible/inventory/group_vars/all/ipa b/ansible/inventory/group_vars/all/ipa index 21fbff2df..e021de913 100644 --- a/ansible/inventory/group_vars/all/ipa +++ b/ansible/inventory/group_vars/all/ipa @@ -20,7 +20,7 @@ ipa_builder_source_url: "https://opendev.org/openstack/ironic-python-agent-build ipa_builder_source_version: "{{ openstack_branch }}" # List of additional build host packages to install. -ipa_build_dib_host_packages_extra: [] +ipa_build_dib_host_packages_extra: [ 'zstd' ] # List of default Diskimage Builder (DIB) elements to use when building IPA # images. Default is ["centos", "dynamic-login", "enable-serial-console", @@ -53,6 +53,7 @@ ipa_build_dib_env_default: DIB_REPOLOCATION_ironic_python_agent: "{{ ipa_build_source_url }}" DIB_REPOREF_ironic_python_agent: "{{ ipa_build_source_version }}" DIB_REPOREF_requirements: "{{ ipa_build_source_version }}" + DIB_IPA_COMPRESS_CMD: 'zstd -19' # Dictionary of additional environment variables to provide to Diskimage # Builder (DIB) during IPA image build. @@ -83,7 +84,7 @@ ipa_build_dib_git_elements_extra: [] ipa_build_dib_git_elements: >- {{ ipa_build_dib_git_elements_default + ipa_build_dib_git_elements_extra }} -# List of DIB packages to install. Default is none. +# List of DIB packages to install. Default is empty list. ipa_build_dib_packages: [] # Upper constraints file for installing packages in the virtual environment diff --git a/doc/source/configuration/reference/ironic-python-agent.rst b/doc/source/configuration/reference/ironic-python-agent.rst index 23f7f4f06..3d79d10e9 100644 --- a/doc/source/configuration/reference/ironic-python-agent.rst +++ b/doc/source/configuration/reference/ironic-python-agent.rst @@ -45,8 +45,7 @@ image build``. ``ipa_builder_source_version`` Version of IPA builder source repository. Default is ``master``. ``ipa_build_dib_host_packages_extra`` - List of additional build host packages to install. Default is an empty - list. + List of additional build host packages to install. Default is ``[ 'zstd' ]``. ``ipa_build_dib_elements_default`` List of default Diskimage Builder (DIB) elements to use when building IPA images. Default is ``["centos", "dynamic-login", "enable-serial-console", diff --git a/etc/kayobe/ipa.yml b/etc/kayobe/ipa.yml index 00a9b9e97..b64320685 100644 --- a/etc/kayobe/ipa.yml +++ b/etc/kayobe/ipa.yml @@ -19,7 +19,7 @@ # Version of IPA builder source repository. Default is {{ openstack_branch }}. #ipa_builder_source_version: -# List of additional build host packages to install. Default is an empty list. +# List of additional build host packages to install. Default is [ 'zstd' ]. #ipa_build_dib_host_packages_extra: # List of default Diskimage Builder (DIB) elements to use when building IPA @@ -64,7 +64,7 @@ # ipa_build_dib_git_elements_default and ipa_build_dib_git_elements_extra. #ipa_build_dib_git_elements: -# List of DIB packages to install. Default is none. +# List of DIB packages to install. Default is empty list. #ipa_build_dib_packages: # Upper constraints file for installing packages in the virtual environment diff --git a/releasenotes/notes/change-IPA-compression-algorithm-to-zstd-19-b3860e0a24ca824e.yaml b/releasenotes/notes/change-IPA-compression-algorithm-to-zstd-19-b3860e0a24ca824e.yaml new file mode 100644 index 000000000..bf4576bb2 --- /dev/null +++ b/releasenotes/notes/change-IPA-compression-algorithm-to-zstd-19-b3860e0a24ca824e.yaml @@ -0,0 +1,14 @@ +--- +features: + - | + Changes the IPA (Ironic Python Agent) image compression algorithm from + the default ``gzip`` to ``zstd``. This improves provisioning + performance by reducing the size of the IPA boot ISO transferred from + the Ironic conductor to the bare metal nodes. +upgrade: + - | + Changes the IPA (Ironic Python Agent) image compression algorithm from + default ``gzip`` to ``zstd``. The ``ipa_build_dib_env_default`` dictionary + now includes ``DIB_IPA_COMPRESS_CMD`` set to ``zstd -19``. + The default ``ipa_build_dib_host_packages_extra`` has been changed from + none to ``['zstd']``. \ No newline at end of file From fd9e45be508d627ae2585af6c1837842874bbe34 Mon Sep 17 00:00:00 2001 From: Pierre Riteau Date: Wed, 15 Oct 2025 09:16:54 +0200 Subject: [PATCH 4/9] Switch default Kolla images for centos/rocky 10 Change-Id: Ia040773a30e3f479402de6261eaaa62a93a1a29b Signed-off-by: Pierre Riteau --- ansible/inventory/group_vars/all/kolla | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/inventory/group_vars/all/kolla b/ansible/inventory/group_vars/all/kolla index f20c0e5fd..ad5942be8 100644 --- a/ansible/inventory/group_vars/all/kolla +++ b/ansible/inventory/group_vars/all/kolla @@ -63,9 +63,9 @@ kolla_base_distro: "{{ os_distribution }}" # Kolla base container image distribution version default map. # Defines default versions for each distribution. kolla_base_distro_version_default_map: { - "centos": "stream9", + "centos": "stream10", "debian": "bookworm", - "rocky": "9", + "rocky": "10", "ubuntu": "noble", } From 29966350ec70932accf10c07920c9ed046da54a1 Mon Sep 17 00:00:00 2001 From: Pierre Riteau Date: Thu, 2 Oct 2025 18:08:12 +0200 Subject: [PATCH 5/9] CI: Add more centos/rocky 10 jobs Depends-On: https://review.opendev.org/c/openstack/ansible-collection-kolla/+/961237 Change-Id: Id50444efffc0c9806614620eac049a12408dcbae Signed-off-by: Pierre Riteau --- zuul.d/jobs.yaml | 49 +++++++++++++++++++++++++++++++++++++++++++++ zuul.d/project.yaml | 13 ++++++++++++ 2 files changed, 62 insertions(+) diff --git a/zuul.d/jobs.yaml b/zuul.d/jobs.yaml index 28429bffb..19b877921 100644 --- a/zuul.d/jobs.yaml +++ b/zuul.d/jobs.yaml @@ -127,6 +127,12 @@ nodeset: kayobe-centos9s voting: false +- job: + name: kayobe-overcloud-centos10s + parent: kayobe-overcloud-base + nodeset: kayobe-centos10s + voting: false + - job: name: kayobe-overcloud-rocky9 parent: kayobe-overcloud-base @@ -141,6 +147,20 @@ vars: container_engine: podman +- job: + name: kayobe-overcloud-rocky10 + parent: kayobe-overcloud-base + vars: + kayobe_control_host_become: false + nodeset: kayobe-rocky10 + +- job: + name: kayobe-overcloud-rocky10-podman + parent: kayobe-overcloud-base + nodeset: kayobe-rocky10 + vars: + container_engine: podman + - job: name: kayobe-overcloud-ubuntu-noble parent: kayobe-overcloud-base @@ -167,11 +187,22 @@ nodeset: kayobe-centos9s voting: false +- job: + name: kayobe-overcloud-tls-centos10s + parent: kayobe-overcloud-tls-base + nodeset: kayobe-centos10s + voting: false + - job: name: kayobe-overcloud-tls-rocky9 parent: kayobe-overcloud-tls-base nodeset: kayobe-rocky9 +- job: + name: kayobe-overcloud-tls-rocky10 + parent: kayobe-overcloud-tls-base + nodeset: kayobe-rocky10 + - job: name: kayobe-overcloud-upgrade-base parent: kayobe-base @@ -223,6 +254,12 @@ nodeset: kayobe-centos9s voting: false +- job: + name: kayobe-seed-centos10s + parent: kayobe-seed-base + nodeset: kayobe-centos10s + voting: false + - job: name: kayobe-seed-rocky9 parent: kayobe-seed-base @@ -235,6 +272,18 @@ vars: container_engine: podman +- job: + name: kayobe-seed-rocky10 + parent: kayobe-seed-base + nodeset: kayobe-rocky10 + +- job: + name: kayobe-seed-rocky10-podman + parent: kayobe-seed-base + nodeset: kayobe-rocky10 + vars: + container_engine: podman + - job: name: kayobe-seed-ubuntu-noble parent: kayobe-seed-base diff --git a/zuul.d/project.yaml b/zuul.d/project.yaml index ad4bbd35a..17b729553 100644 --- a/zuul.d/project.yaml +++ b/zuul.d/project.yaml @@ -18,9 +18,14 @@ - kayobe-overcloud-host-configure-rocky10 - kayobe-overcloud-host-configure-rocky9 - kayobe-overcloud-host-configure-ubuntu-noble + - kayobe-overcloud-rocky10 + - kayobe-overcloud-rocky10-podman + - kayobe-overcloud-tls-rocky10 - kayobe-overcloud-ubuntu-noble - kayobe-overcloud-ubuntu-noble-podman - kayobe-overcloud-upgrade-ubuntu-noble + - kayobe-seed-rocky10 + - kayobe-seed-rocky10-podman - kayobe-seed-ubuntu-noble - kayobe-seed-ubuntu-noble-podman - kayobe-seed-upgrade-ubuntu-noble @@ -38,9 +43,14 @@ - kayobe-overcloud-host-configure-rocky10 - kayobe-overcloud-host-configure-rocky9 - kayobe-overcloud-host-configure-ubuntu-noble + - kayobe-overcloud-rocky10 + - kayobe-overcloud-rocky10-podman + - kayobe-overcloud-tls-rocky10 - kayobe-overcloud-ubuntu-noble - kayobe-overcloud-ubuntu-noble-podman - kayobe-overcloud-upgrade-ubuntu-noble + - kayobe-seed-rocky10 + - kayobe-seed-rocky10-podman - kayobe-seed-ubuntu-noble - kayobe-seed-ubuntu-noble-podman - kayobe-seed-upgrade-ubuntu-noble @@ -57,13 +67,16 @@ - kayobe-infra-vm-rocky10-cloud-image - kayobe-infra-vm-rocky9-cloud-image - kayobe-infra-vm-ubuntu-noble-cloud-image + - kayobe-overcloud-centos10s - kayobe-overcloud-centos9s - kayobe-overcloud-host-configure-centos10s - kayobe-overcloud-host-configure-centos9s - kayobe-overcloud-rocky9 - kayobe-overcloud-rocky9-podman + - kayobe-overcloud-tls-centos10s - kayobe-overcloud-tls-rocky9 - kayobe-overcloud-upgrade-rocky9 + - kayobe-seed-centos10s - kayobe-seed-images-centos9s - kayobe-seed-images-rocky9 - kayobe-seed-images-rocky9-podman From 3ba07b28be8a468dd263833f741fadc7e21af45a Mon Sep 17 00:00:00 2001 From: Claudia Watson Date: Mon, 8 Sep 2025 11:21:45 +0100 Subject: [PATCH 6/9] Add redfish pxe args for virtual media Use ironic pxe variables for redfish. Both Redfish and PXE boot are now supported using a common set of configuration parameters. New variables are in the form kolla_ironic_kernel_append_params. References to old pxe variables in other documentation has been updated. Change-Id: I4bb2930c145da7ca413e3e99a003e14a1e159439 Signed-off-by: Claudia Watson --- ansible/inventory/group_vars/all/ironic | 21 ++++++++++++------- .../roles/kolla-openstack/defaults/main.yml | 5 ++++- .../templates/kolla/config/ironic.conf | 5 +++++ .../reference/ironic-python-agent.rst | 4 ++-- etc/kayobe/ironic.yml | 8 +++++++ .../kayobe-overcloud-base/overrides.yml.j2 | 2 +- ...gs-for-virtual-media-1446188235feaaac.yaml | 12 +++++++++++ 7 files changed, 46 insertions(+), 11 deletions(-) create mode 100644 releasenotes/notes/add-redfish-pxe-args-for-virtual-media-1446188235feaaac.yaml diff --git a/ansible/inventory/group_vars/all/ironic b/ansible/inventory/group_vars/all/ironic index 72f26e2f7..e67526a79 100644 --- a/ansible/inventory/group_vars/all/ironic +++ b/ansible/inventory/group_vars/all/ironic @@ -98,20 +98,27 @@ kolla_ironic_cleaning_network: "{{ kolla_ironic_provisioning_network if cleaning kolla_ironic_provisioning_network: 'provision-net' # List of default kernel parameters to append for baremetal PXE boot. -kolla_ironic_pxe_append_params_default: +kolla_ironic_pxe_append_params_default: "{{ kolla_ironic_kernel_append_params_default }}" + +# List of additional kernel parameters to append for baremetal PXE boot. +kolla_ironic_pxe_append_params_extra: "{{ kolla_ironic_kernel_append_params_extra }}" + +# List of kernel parameters to append for baremetal PXE boot. +kolla_ironic_pxe_append_params: "{{ kolla_ironic_pxe_append_params_default + kolla_ironic_pxe_append_params_extra }}" + +# List of default kernel parameters to append for baremetal boot. +kolla_ironic_kernel_append_params_default: - nofb - nomodeset - vga=normal - console=tty0 - console=ttyS0,115200n8 -# List of additional kernel parameters to append for baremetal PXE boot. -kolla_ironic_pxe_append_params_extra: [] +# List of additional kernel parameters to append for baremetal boot. +kolla_ironic_kernel_append_params_extra: [] -# List of kernel parameters to append for baremetal PXE boot. -kolla_ironic_pxe_append_params: > - {{ kolla_ironic_pxe_append_params_default + - kolla_ironic_pxe_append_params_extra }} +# List of kernel parameters to append for baremetal boot. +kolla_ironic_kernel_append_params: "{{ kolla_ironic_kernel_append_params_default + kolla_ironic_kernel_append_params_extra }}" ############################################################################### # Ironic Node Configuration diff --git a/ansible/roles/kolla-openstack/defaults/main.yml b/ansible/roles/kolla-openstack/defaults/main.yml index 0d9f2b697..780cca622 100644 --- a/ansible/roles/kolla-openstack/defaults/main.yml +++ b/ansible/roles/kolla-openstack/defaults/main.yml @@ -550,7 +550,10 @@ kolla_ironic_cleaning_network: # Name or UUID of the Neutron network to use for provisioning. kolla_ironic_provisioning_network: -# List of additional append parameters for baremetal PXE boot. +# List of additional append parameters for baremetal boot. +kolla_ironic_kernel_append_params: [] + +#List of additional append parameters for baremetal PXE boot. kolla_ironic_pxe_append_params: [] # Deprecated: diff --git a/ansible/roles/kolla-openstack/templates/kolla/config/ironic.conf b/ansible/roles/kolla-openstack/templates/kolla/config/ironic.conf index f91aad0db..5485efb21 100644 --- a/ansible/roles/kolla-openstack/templates/kolla/config/ironic.conf +++ b/ansible/roles/kolla-openstack/templates/kolla/config/ironic.conf @@ -18,6 +18,11 @@ enabled_hardware_types: {{ kolla_ironic_enabled_hardware_types | join(',') }} [agent] deploy_logs_local_path = /var/log/kolla/ironic/deploy +[redfish] +{% if kolla_ironic_kernel_append_params %} +kernel_append_params = {{ kolla_ironic_kernel_append_params | join(' ') }} +{% endif %} + [neutron] cleaning_network = {{ kolla_ironic_cleaning_network }} provisioning_network = {{ kolla_ironic_provisioning_network }} diff --git a/doc/source/configuration/reference/ironic-python-agent.rst b/doc/source/configuration/reference/ironic-python-agent.rst index 23f7f4f06..b61a6a562 100644 --- a/doc/source/configuration/reference/ironic-python-agent.rst +++ b/doc/source/configuration/reference/ironic-python-agent.rst @@ -162,12 +162,12 @@ Bifrost can be configured to use ``dynamic-login`` with the The updated configuration is applied with ``kayobe seed service deploy``. Overcloud Ironic can be configured with the -``kolla_ironic_pxe_append_params_extra`` variable: +``kolla_ironic_kernel_append_params_extra`` variable: .. code-block:: yaml :caption: ``ironic.yml`` - kolla_ironic_pxe_append_params_extra: + kolla_ironic_kernel_append_params_extra: - sshkey="ssh-rsa BBA1..." The updated configuration is applied with ``kayobe overcloud service deploy``. diff --git a/etc/kayobe/ironic.yml b/etc/kayobe/ironic.yml index 1298fcb67..e1f36579e 100644 --- a/etc/kayobe/ironic.yml +++ b/etc/kayobe/ironic.yml @@ -106,6 +106,14 @@ # List of kernel parameters to append for baremetal PXE boot. #kolla_ironic_pxe_append_params: +# List of default kernel parameters to append for baremetal boot. +#kolla_ironic_kernel_append_params_default: + +# List of additional kernel parameters to append for baremetal boot. +#kolla_ironic_kernel_append_params_extra: + +# List of kernel parameters to append for baremetal boot. +#kolla_ironic_kernel_append_params: ############################################################################### # Ironic Node Configuration diff --git a/playbooks/kayobe-overcloud-base/overrides.yml.j2 b/playbooks/kayobe-overcloud-base/overrides.yml.j2 index c13f16f1a..a0a46b5c6 100644 --- a/playbooks/kayobe-overcloud-base/overrides.yml.j2 +++ b/playbooks/kayobe-overcloud-base/overrides.yml.j2 @@ -52,7 +52,7 @@ compute_libvirt_enable_tls: true kolla_enable_tls_external: "yes" kolla_enable_tls_internal: "yes" -kolla_ironic_pxe_append_params_extra: +kolla_ironic_kernel_append_params_extra: - ipa-insecure=1 {% endif %} diff --git a/releasenotes/notes/add-redfish-pxe-args-for-virtual-media-1446188235feaaac.yaml b/releasenotes/notes/add-redfish-pxe-args-for-virtual-media-1446188235feaaac.yaml new file mode 100644 index 000000000..24837912e --- /dev/null +++ b/releasenotes/notes/add-redfish-pxe-args-for-virtual-media-1446188235feaaac.yaml @@ -0,0 +1,12 @@ +--- +features: + - | + Adds support for Redfish virtual media and + PXE boot using a common set of variables. + Migration to using + ``kolla_ironic_kernel_append_params`` is + advised. + New boot variables are: + kolla_ironic_kernel_append_params, + kolla_ironic_kernel_append_params_default, + kolla_ironic_kernel_append_params_extra. From 559a08b811a397390635ab3573e7f4e639ba14c6 Mon Sep 17 00:00:00 2001 From: Maksim Malchuk Date: Fri, 17 Oct 2025 16:05:18 +0300 Subject: [PATCH 7/9] Remove default(omit) from Bifrost inventory template The use of default(omit) is for module parameters, not templates. It will generate something like '__omit_place_holder__43ba6b6adb2908224e20a191174d53ef36403cfc'. Closes-Bug: #2045927 Depends-On: https://review.opendev.org/c/openstack/bifrost/+/953336 Change-Id: Ia614645d6b49f10a0c81ae0a0ab2398a9b56912c Signed-off-by: Maksim Malchuk --- ansible/inventory/group_vars/all/bifrost | 4 ++-- ansible/kolla-bifrost-hostvars.yml | 2 +- etc/kayobe/bifrost.yml | 2 +- .../notes/fix-bifrost-invenory-05f8a92915998f09.yaml | 5 +++++ 4 files changed, 9 insertions(+), 4 deletions(-) create mode 100644 releasenotes/notes/fix-bifrost-invenory-05f8a92915998f09.yaml diff --git a/ansible/inventory/group_vars/all/bifrost b/ansible/inventory/group_vars/all/bifrost index 18eb4bb91..76042ff6b 100644 --- a/ansible/inventory/group_vars/all/bifrost +++ b/ansible/inventory/group_vars/all/bifrost @@ -68,8 +68,8 @@ kolla_bifrost_deploy_image_filename: "deployment_image.qcow2" # UUID of the root filesystem contained within the deployment image. # See below URL for instructions on how to extract it: # https://docs.openstack.org/ironic/latest/admin/raid.html#image-requirements -# Default is none. -kolla_bifrost_deploy_image_rootfs: +# Default is an empty string. +kolla_bifrost_deploy_image_rootfs: '' # Custom cloud-init user-data passed to deploy of the deployment image. # Default is an empty string. diff --git a/ansible/kolla-bifrost-hostvars.yml b/ansible/kolla-bifrost-hostvars.yml index ce330fe15..d560e4d0e 100644 --- a/ansible/kolla-bifrost-hostvars.yml +++ b/ansible/kolla-bifrost-hostvars.yml @@ -19,7 +19,7 @@ bifrost_hostvars: addressing_mode: static deploy_image_filename: "{{ kolla_bifrost_deploy_image_filename }}" - deploy_image_rootfs: "{{ kolla_bifrost_deploy_image_rootfs | default(omit, true) }}" + deploy_image_rootfs: "{{ kolla_bifrost_deploy_image_rootfs }}" ipv4_interface_mac: "{% if kolla_bifrost_ipv4_interface_mac is defined %}{{ kolla_bifrost_ipv4_interface_mac }}{% else %}{% raw %}{{ extra.pxe_interface_mac | default }}{% endraw %}{% endif %}" ipv4_address: "{{ admin_oc_net_name | net_ip }}" ipv4_subnet_mask: "{{ admin_oc_net_name | net_mask }}" diff --git a/etc/kayobe/bifrost.yml b/etc/kayobe/bifrost.yml index cf75637e7..8c5e9a501 100644 --- a/etc/kayobe/bifrost.yml +++ b/etc/kayobe/bifrost.yml @@ -69,7 +69,7 @@ # UUID of the root filesystem contained within the deployment image. # See below URL for instructions on how to extract it: # https://docs.openstack.org/ironic/latest/admin/raid.html#image-requirements -# Default is none. +# Default is an empty string. #kolla_bifrost_deploy_image_rootfs: # Custom cloud-init user-data passed to deploy of the deployment image. diff --git a/releasenotes/notes/fix-bifrost-invenory-05f8a92915998f09.yaml b/releasenotes/notes/fix-bifrost-invenory-05f8a92915998f09.yaml new file mode 100644 index 000000000..c616a971a --- /dev/null +++ b/releasenotes/notes/fix-bifrost-invenory-05f8a92915998f09.yaml @@ -0,0 +1,5 @@ +--- +fixes: + - | + Fixes issue when Bifrost hostvars file incorectly generated by Kayobe. + `LP#2045927 `__ From 8882c873055ac74c0916d6d6acc58b6823c496a7 Mon Sep 17 00:00:00 2001 From: Pierre Riteau Date: Sat, 18 Oct 2025 06:27:18 +0200 Subject: [PATCH 8/9] CI: Replace deprecated yaml callback plugin [DEPRECATION WARNING]: community.general.yaml has been deprecated. The plugin has been superseded by the option `result_format=yaml` in callback plugin ansible.builtin.default from ansible-core 2.13 onwards. This feature will be removed from community.general in version 12.0.0. Change-Id: I173240e0c7b5559a1ef1eea95067bd9d6c390ab4 Signed-off-by: Pierre Riteau --- playbooks/kayobe-base/pre.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/playbooks/kayobe-base/pre.yml b/playbooks/kayobe-base/pre.yml index 34a317a0e..a8be2b19c 100644 --- a/playbooks/kayobe-base/pre.yml +++ b/playbooks/kayobe-base/pre.yml @@ -15,7 +15,7 @@ callbacks_enabled = ansible.posix.profile_tasks # Improve readability of ansible output. - stdout_callback = yaml + callback_result_format = yaml [ssh_connection] # NOTE(wszusmki): Disable pipelining due to: @@ -36,7 +36,7 @@ callbacks_enabled = ansible.posix.profile_tasks # Improve readability of ansible output. - stdout_callback = yaml + callback_result_format = yaml [ssh_connection] # NOTE(wszusmki): Disable pipelining due to: From 2b875095344b9c029becce3d8f3fb720633fab35 Mon Sep 17 00:00:00 2001 From: Bartosz Bezak Date: Fri, 24 Oct 2025 16:44:04 +0200 Subject: [PATCH 9/9] neutron: Remove support for linux bridge mechanism driver Neutron and kolla already removed it [1][2]. [1] https://review.opendev.org/c/openstack/neutron/+/927216 [2] https://review.opendev.org/c/openstack/kolla-ansible/+/962278 Change-Id: If77366a0f8bb5f6ac3c9951533a2d75c9b0780a9 Signed-off-by: Bartosz Bezak --- ansible/inventory/group_vars/all/kolla | 2 +- ansible/roles/kolla-ansible/templates/kolla/globals.yml | 2 +- releasenotes/notes/remove-linuxbridge-0112ace7c0bff24b.yaml | 5 +++++ 3 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 releasenotes/notes/remove-linuxbridge-0112ace7c0bff24b.yaml diff --git a/ansible/inventory/group_vars/all/kolla b/ansible/inventory/group_vars/all/kolla index ad5942be8..ec74668ff 100644 --- a/ansible/inventory/group_vars/all/kolla +++ b/ansible/inventory/group_vars/all/kolla @@ -208,7 +208,7 @@ overcloud_container_image_regex_map: enabled: "{{ kolla_enable_multipathd | bool }}" - regex: "neutron-\\(server\\|metadata-agent\\)" enabled: "{{ kolla_enable_neutron | bool }}" - - regex: "neutron-\\(dhcp\\|l3\\|linuxbridge\\|openvswitch\\)-agent" + - regex: "neutron-\\(dhcp\\|l3\\|openvswitch\\)-agent" enabled: "{{ kolla_build_neutron_ovs | default(kolla_enable_neutron | bool and not kolla_enable_ovn | bool) }}" - regex: neutron-bgp-dragent enabled: "{{ kolla_enable_neutron_bgp_dragent | bool }}" diff --git a/ansible/roles/kolla-ansible/templates/kolla/globals.yml b/ansible/roles/kolla-ansible/templates/kolla/globals.yml index f8a93be65..a1a01451d 100644 --- a/ansible/roles/kolla-ansible/templates/kolla/globals.yml +++ b/ansible/roles/kolla-ansible/templates/kolla/globals.yml @@ -119,7 +119,7 @@ docker_registry_username: "{{ kolla_docker_registry_username }}" #bifrost_network_address_family: "{% raw %}{{ network_address_family }}{% endraw %}" #dns_address_family: "{% raw %}{{ network_address_family }}{% endraw %}" -# Valid options are [ openvswitch, linuxbridge ] +# Valid options are [ openvswitch, ovn ] neutron_plugin_agent: "{% if kolla_enable_ovn | default(False) | bool %}ovn{% else %}openvswitch{% endif %}" # Valid options are [ internal, infoblox ] diff --git a/releasenotes/notes/remove-linuxbridge-0112ace7c0bff24b.yaml b/releasenotes/notes/remove-linuxbridge-0112ace7c0bff24b.yaml new file mode 100644 index 000000000..f5625e782 --- /dev/null +++ b/releasenotes/notes/remove-linuxbridge-0112ace7c0bff24b.yaml @@ -0,0 +1,5 @@ +--- +upgrade: + - | + Support for Linux Bridge mechanism driver has been removed. The driver was + already removed from neutron.