aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakashi Kajinami <kajinamit@oss.nttdata.com>2025-09-25 22:26:01 +0900
committerMichal Nasiadka <mnasiadka@gmail.com>2025-10-24 19:07:20 +0000
commitfd6d740106965b6518fd2b6f3d1ab9e84221966d (patch)
tree7f62288f4fac43604c56fd3dc57d5acd02c809f0
parent2630a33137dac53be2604f3a5cb059ffa65af907 (diff)
downloadkolla-ansible-fd6d740106965b6518fd2b6f3d1ab9e84221966d.tar.gz
kolla-ansible-fd6d740106965b6518fd2b6f3d1ab9e84221966d.zip
neutron: Remove support for linux bridge mechanism driver
... because it was removed from neutron during 2025.1 cycle[1]. [1] https://review.opendev.org/c/openstack/neutron/+/927216 Depends-On: https://review.opendev.org/c/openstack/kolla/+/962279 Change-Id: I79d896d7dea299641bc5a7f0f2a0735c9719a16d Signed-off-by: Takashi Kajinami <kajinamit@oss.nttdata.com>
-rw-r--r--ansible/group_vars/all/neutron.yml4
-rw-r--r--ansible/group_vars/all/openvswitch.yml2
-rw-r--r--ansible/roles/manila/templates/manila-share.conf.j22
-rw-r--r--ansible/roles/neutron/defaults/main.yml47
-rw-r--r--ansible/roles/neutron/handlers/main.yml16
-rw-r--r--ansible/roles/neutron/tasks/config-host.yml2
-rw-r--r--ansible/roles/neutron/tasks/config.yml16
-rw-r--r--ansible/roles/neutron/templates/linuxbridge_agent.ini.j224
-rw-r--r--ansible/roles/neutron/templates/neutron-linuxbridge-agent.json.j244
-rw-r--r--ansible/roles/neutron/templates/neutron.conf.j22
-rw-r--r--etc/kolla/globals.yml6
-rw-r--r--releasenotes/notes/remove-neutron-linuxbridge-b1a2457e848709f7.yaml5
12 files changed, 10 insertions, 160 deletions
diff --git a/ansible/group_vars/all/neutron.yml b/ansible/group_vars/all/neutron.yml
index 938b1836e..2c3b9ca94 100644
--- a/ansible/group_vars/all/neutron.yml
+++ b/ansible/group_vars/all/neutron.yml
@@ -22,9 +22,7 @@ neutron_enable_ovn_agent: "no"
neutron_keystone_user: "neutron"
-# Valid options are [ openvswitch, ovn, linuxbridge ]
-# Do note linuxbridge is *EXPERIMENTAL* in Neutron since Zed and it requires extra tweaks to config to be usable.
-# For details, see: https://docs.openstack.org/neutron/latest/admin/config-experimental-framework.html
+# Valid options are [ openvswitch, ovn ]
neutron_plugin_agent: "openvswitch"
# Valid options are [ internal, infoblox ]
diff --git a/ansible/group_vars/all/openvswitch.yml b/ansible/group_vars/all/openvswitch.yml
index 68a813b43..731f99d00 100644
--- a/ansible/group_vars/all/openvswitch.yml
+++ b/ansible/group_vars/all/openvswitch.yml
@@ -1,5 +1,5 @@
---
-enable_openvswitch: "{{ enable_neutron | bool and neutron_plugin_agent != 'linuxbridge' }}"
+enable_openvswitch: "{{ enable_neutron | bool }}"
enable_ovs_dpdk: "no"
ovs_datapath: "{{ 'netdev' if enable_ovs_dpdk | bool else 'system' }}"
diff --git a/ansible/roles/manila/templates/manila-share.conf.j2 b/ansible/roles/manila/templates/manila-share.conf.j2
index ee1deb341..cade41e82 100644
--- a/ansible/roles/manila/templates/manila-share.conf.j2
+++ b/ansible/roles/manila/templates/manila-share.conf.j2
@@ -74,8 +74,6 @@ memcached_servers = {% for host in groups['memcached'] %}{{ 'api' | kolla_addres
share_driver = manila.share.drivers.generic.GenericShareDriver
{% if neutron_plugin_agent == "openvswitch" %}
interface_driver = manila.network.linux.interface.OVSInterfaceDriver
-{% elif neutron_plugin_agent == "linuxbridge" %}
-interface_driver = manila.network.linux.interface.BridgeInterfaceDriver
{% endif %}
driver_handles_share_servers = true
diff --git a/ansible/roles/neutron/defaults/main.yml b/ansible/roles/neutron/defaults/main.yml
index d36dd4edb..731672997 100644
--- a/ansible/roles/neutron/defaults/main.yml
+++ b/ansible/roles/neutron/defaults/main.yml
@@ -79,22 +79,6 @@ neutron_services:
volumes: "{{ neutron_openvswitch_agent_default_volumes + neutron_openvswitch_agent_extra_volumes }}"
dimensions: "{{ neutron_openvswitch_agent_dimensions }}"
healthcheck: "{{ neutron_openvswitch_agent_healthcheck }}"
- neutron-linuxbridge-agent:
- container_name: "neutron_linuxbridge_agent"
- image: "{{ neutron_linuxbridge_agent_image_full }}"
- privileged: True
- enabled: "{{ neutron_plugin_agent == 'linuxbridge' }}"
- host_in_groups: >-
- {{
- inventory_hostname in groups['compute']
- or (enable_manila | bool and inventory_hostname in groups['manila-share'])
- or inventory_hostname in groups['neutron-dhcp-agent']
- or inventory_hostname in groups['neutron-l3-agent']
- or inventory_hostname in groups['neutron-metadata-agent']
- }}
- volumes: "{{ neutron_linuxbridge_agent_default_volumes + neutron_linuxbridge_agent_extra_volumes }}"
- dimensions: "{{ neutron_linuxbridge_agent_dimensions }}"
- healthcheck: "{{ neutron_linuxbridge_agent_healthcheck }}"
neutron-dhcp-agent:
cgroupns_mode: "{{ 'host' if neutron_agents_wrappers | bool else 'private' }}"
container_name: "neutron_dhcp_agent"
@@ -248,8 +232,6 @@ neutron_config_validation:
config: "/etc/neutron/l3_agent.ini"
- generator: "/neutron/etc/oslo-config-generator/dhcp_agent.ini"
config: "/etc/neutron/dhcp_agent.ini"
- - generator: "/neutron/etc/oslo-config-generator/linuxbridge_agent.ini"
- config: "/etc/neutron/plugins/ml2/linuxbridge_agent.ini"
####################
# Database
@@ -301,10 +283,6 @@ neutron_eswitchd_image: "{{ docker_image_url }}neutron-mlnx-agent"
neutron_eswitchd_tag: "{{ neutron_mlnx_agent_tag }}"
neutron_eswitchd_image_full: "{{ neutron_eswitchd_image }}:{{ neutron_eswitchd_tag }}"
-neutron_linuxbridge_agent_image: "{{ docker_image_url }}neutron-linuxbridge-agent"
-neutron_linuxbridge_agent_tag: "{{ neutron_tag }}"
-neutron_linuxbridge_agent_image_full: "{{ neutron_linuxbridge_agent_image }}:{{ neutron_linuxbridge_agent_tag }}"
-
neutron_metadata_agent_image: "{{ docker_image_url }}neutron-metadata-agent"
neutron_metadata_agent_tag: "{{ neutron_tag }}"
neutron_metadata_agent_image_full: "{{ neutron_metadata_agent_image }}:{{ neutron_metadata_agent_tag }}"
@@ -360,7 +338,6 @@ neutron_l3_agent_dimensions: "{{ neutron_agent_dimensions }}"
neutron_sriov_agent_dimensions: "{{ neutron_agent_dimensions }}"
neutron_mlnx_agent_dimensions: "{{ neutron_agent_dimensions }}"
neutron_eswitchd_dimensions: "{{ neutron_agent_dimensions }}"
-neutron_linuxbridge_agent_dimensions: "{{ neutron_agent_dimensions }}"
neutron_metadata_agent_dimensions: "{{ neutron_agent_dimensions }}"
neutron_ovn_metadata_agent_dimensions: "{{ neutron_agent_dimensions }}"
neutron_openvswitch_agent_dimensions: "{{ neutron_agent_dimensions }}"
@@ -400,19 +377,6 @@ neutron_l3_agent_healthcheck:
test: "{% if neutron_l3_agent_enable_healthchecks | bool %}{{ neutron_l3_agent_healthcheck_test }}{% else %}NONE{% endif %}"
timeout: "{{ neutron_l3_agent_healthcheck_timeout }}"
-neutron_linuxbridge_agent_enable_healthchecks: "{{ enable_container_healthchecks }}"
-neutron_linuxbridge_agent_healthcheck_interval: "{{ default_container_healthcheck_interval }}"
-neutron_linuxbridge_agent_healthcheck_retries: "{{ default_container_healthcheck_retries }}"
-neutron_linuxbridge_agent_healthcheck_start_period: "{{ default_container_healthcheck_start_period }}"
-neutron_linuxbridge_agent_healthcheck_test: ["CMD-SHELL", "healthcheck_port neutron-linuxbridge-agent {{ om_rpc_port }}"]
-neutron_linuxbridge_agent_healthcheck_timeout: "{{ default_container_healthcheck_timeout }}"
-neutron_linuxbridge_agent_healthcheck:
- interval: "{{ neutron_linuxbridge_agent_healthcheck_interval }}"
- retries: "{{ neutron_linuxbridge_agent_healthcheck_retries }}"
- start_period: "{{ neutron_linuxbridge_agent_healthcheck_start_period }}"
- test: "{% if neutron_linuxbridge_agent_enable_healthchecks | bool %}{{ neutron_linuxbridge_agent_healthcheck_test }}{% else %}NONE{% endif %}"
- timeout: "{{ neutron_linuxbridge_agent_healthcheck_timeout }}"
-
neutron_metadata_agent_enable_healthchecks: "no"
neutron_metadata_agent_healthcheck_interval: "{{ default_container_healthcheck_interval }}"
neutron_metadata_agent_healthcheck_retries: "{{ default_container_healthcheck_retries }}"
@@ -603,14 +567,6 @@ neutron_eswitchd_default_volumes:
- "kolla_logs:/var/log/kolla/"
- "{{ '/dev/shm:/dev/shm' }}"
- "{{ kolla_dev_repos_directory ~ '/neutron:/dev-mode/neutron' if neutron_dev_mode | bool else '' }}"
-neutron_linuxbridge_agent_default_volumes:
- - "{{ node_config_directory }}/neutron-linuxbridge-agent/:{{ container_config_directory }}/:ro"
- - "/etc/localtime:/etc/localtime:ro"
- - "{{ '/etc/timezone:/etc/timezone:ro' if ansible_facts.os_family == 'Debian' else '' }}"
- - "/lib/modules:/lib/modules:ro"
- - "kolla_logs:/var/log/kolla/"
- - "{{ '/dev/shm:/dev/shm' }}"
- - "{{ kolla_dev_repos_directory ~ '/neutron:/dev-mode/neutron' if neutron_dev_mode | bool else '' }}"
neutron_metadata_agent_default_volumes:
- "{{ node_config_directory }}/neutron-metadata-agent/:{{ container_config_directory }}/:ro"
- "/etc/localtime:/etc/localtime:ro"
@@ -700,7 +656,6 @@ neutron_l3_agent_extra_volumes: "{{ neutron_extra_volumes }}"
neutron_sriov_agent_extra_volumes: "{{ neutron_extra_volumes }}"
neutron_mlnx_agent_extra_volumes: "{{ neutron_extra_volumes }}"
neutron_eswitchd_extra_volumes: "{{ neutron_extra_volumes }}"
-neutron_linuxbridge_agent_extra_volumes: "{{ neutron_extra_volumes }}"
neutron_metadata_agent_extra_volumes: "{{ neutron_extra_volumes }}"
neutron_ovn_metadata_agent_extra_volumes: "{{ neutron_extra_volumes }}"
neutron_openvswitch_agent_extra_volumes: "{{ neutron_extra_volumes }}"
@@ -763,8 +718,6 @@ neutron_subprojects:
# Mechanism drivers
####################
mechanism_drivers:
- - name: "linuxbridge"
- enabled: "{{ neutron_plugin_agent == 'linuxbridge' }}"
- name: "openvswitch"
enabled: "{{ neutron_plugin_agent == 'openvswitch' }}"
- name: "mlnx_infiniband"
diff --git a/ansible/roles/neutron/handlers/main.yml b/ansible/roles/neutron/handlers/main.yml
index 068b83152..386e3a97d 100644
--- a/ansible/roles/neutron/handlers/main.yml
+++ b/ansible/roles/neutron/handlers/main.yml
@@ -91,22 +91,6 @@
healthcheck: "{{ service.healthcheck | default(omit) }}"
with_sequence: "start=1 end={{ num_nova_fake_per_node }}"
-- name: Restart neutron-linuxbridge-agent container
- vars:
- service_name: "neutron-linuxbridge-agent"
- service: "{{ neutron_services[service_name] }}"
- become: true
- kolla_container:
- action: "recreate_or_restart_container"
- common_options: "{{ docker_common_options }}"
- name: "{{ service.container_name }}"
- image: "{{ service.image }}"
- environment: "{{ service.environment | default(omit) }}"
- volumes: "{{ service.volumes | reject('equalto', '') | list }}"
- dimensions: "{{ service.dimensions }}"
- privileged: "{{ service.privileged | default(False) }}"
- healthcheck: "{{ service.healthcheck | default(omit) }}"
-
- name: Restart neutron-dhcp-agent container
vars:
service_name: "neutron-dhcp-agent"
diff --git a/ansible/roles/neutron/tasks/config-host.yml b/ansible/roles/neutron/tasks/config-host.yml
index a33919b12..8ad3f3d5a 100644
--- a/ansible/roles/neutron/tasks/config-host.yml
+++ b/ansible/roles/neutron/tasks/config-host.yml
@@ -8,7 +8,7 @@
neutron_services |
select_services_enabled_and_mapped_to_host |
list |
- intersect(["neutron-l3-agent", "neutron-linuxbridge-agent", "neutron-openvswitch-agent"]) |
+ intersect(["neutron-l3-agent", "neutron-openvswitch-agent"]) |
list |
length > 0
diff --git a/ansible/roles/neutron/tasks/config.yml b/ansible/roles/neutron/tasks/config.yml
index a8c22e006..1de5ca358 100644
--- a/ansible/roles/neutron/tasks/config.yml
+++ b/ansible/roles/neutron/tasks/config.yml
@@ -69,7 +69,6 @@
- "neutron-eswitchd"
- "neutron-infoblox-ipam-agent"
- "neutron-l3-agent"
- - "neutron-linuxbridge-agent"
- "neutron-metadata-agent"
- "neutron-metering-agent"
- "neutron-mlnx-agent"
@@ -144,20 +143,6 @@
- item.key in services_need_ml2_conf_ini
with_dict: "{{ neutron_services | select_services_enabled_and_mapped_to_host }}"
-- name: Copying over linuxbridge_agent.ini
- become: true
- vars:
- service_name: "neutron-linuxbridge-agent"
- service: "{{ neutron_services[service_name] }}"
- merge_configs:
- sources:
- - "{{ role_path }}/templates/linuxbridge_agent.ini.j2"
- - "{{ node_custom_config }}/neutron/linuxbridge_agent.ini"
- - "{{ node_custom_config }}/neutron/{{ inventory_hostname }}/linuxbridge_agent.ini"
- dest: "{{ node_config_directory }}/{{ service_name }}/linuxbridge_agent.ini"
- mode: "0660"
- when: service | service_enabled_and_mapped_to_host
-
- name: Copying over openvswitch_agent.ini
become: true
vars:
@@ -372,7 +357,6 @@
vars:
service_name: "{{ item.0 }}"
services_need_ml2_conf_ini:
- - "neutron-linuxbridge-agent"
- "neutron-openvswitch-agent"
- "neutron-server"
template:
diff --git a/ansible/roles/neutron/templates/linuxbridge_agent.ini.j2 b/ansible/roles/neutron/templates/linuxbridge_agent.ini.j2
deleted file mode 100644
index 5b0ae990b..000000000
--- a/ansible/roles/neutron/templates/linuxbridge_agent.ini.j2
+++ /dev/null
@@ -1,24 +0,0 @@
-[agent]
-{% if neutron_agent_extensions %}
-extensions = {{ neutron_agent_extensions|map(attribute='name')|join(',') }}
-{% endif %}
-
-[linux_bridge]
-{% if inventory_hostname in groups["network"] or (inventory_hostname in groups["compute"] and computes_need_external_bridge | bool ) %}
-{# Format: physnet1:br1,physnet2:br2 #}
-physical_interface_mappings = {{ neutron_physical_networks.split(',') | zip(neutron_external_interface.split(',')) | map('join', ':') | join(',') }}
-{% endif %}
-
-[securitygroup]
-firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
-
-[vxlan]
-l2_population = true
-local_ip = {{ tunnel_interface_address }}
-
-{% if enable_neutron_sriov | bool %}
-[FDB]
-# Allows instances using sriov ports to communicate with instances that do not.
-# See https://docs.openstack.org/neutron/latest/admin/config-sriov.html
-shared_physical_device_mappings = {{ neutron_sriov_physnets }}
-{% endif %}
diff --git a/ansible/roles/neutron/templates/neutron-linuxbridge-agent.json.j2 b/ansible/roles/neutron/templates/neutron-linuxbridge-agent.json.j2
deleted file mode 100644
index 937abe37c..000000000
--- a/ansible/roles/neutron/templates/neutron-linuxbridge-agent.json.j2
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "command": "neutron-linuxbridge-agent --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/linuxbridge_agent.ini",
- "config_files": [
- {
- "source": "{{ container_config_directory }}/neutron.conf",
- "dest": "/etc/neutron/neutron.conf",
- "owner": "neutron",
- "perm": "0600"
- },
- {% if neutron_policy_file is defined %}{
- "source": "{{ container_config_directory }}/{{ neutron_policy_file }}",
- "dest": "/etc/neutron/{{ neutron_policy_file }}",
- "owner": "neutron",
- "perm": "0600"
- },{% endif %}
-{% if check_extra_ml2_plugins is defined and check_extra_ml2_plugins.matched > 0 %}{% for plugin in check_extra_ml2_plugins.files %}
- {
- "source": "{{ container_config_directory }}/{{ plugin.path | basename }}",
- "dest": "/etc/neutron/plugins/ml2/{{ plugin.path | basename }}",
- "owner": "neutron",
- "perm": "0600"
- },
-{% endfor %}{% endif %}
- {
- "source": "{{ container_config_directory }}/linuxbridge_agent.ini",
- "dest": "/etc/neutron/plugins/ml2/linuxbridge_agent.ini",
- "owner": "neutron",
- "perm": "0600"
- }{% if kolla_copy_ca_into_containers | bool %},
- {
- "source": "{{ container_config_directory }}/ca-certificates",
- "dest": "/var/lib/kolla/share/ca-certificates",
- "owner": "root",
- "perm": "0600"
- }{% endif %}
- ],
- "permissions": [
- {
- "path": "/var/log/kolla/neutron",
- "owner": "neutron:neutron",
- "recurse": true
- }
- ]
-}
diff --git a/ansible/roles/neutron/templates/neutron.conf.j2 b/ansible/roles/neutron/templates/neutron.conf.j2
index 648ea97df..0c5323d7e 100644
--- a/ansible/roles/neutron/templates/neutron.conf.j2
+++ b/ansible/roles/neutron/templates/neutron.conf.j2
@@ -25,8 +25,6 @@ state_path = /var/lib/neutron/kolla
{% if neutron_plugin_agent == "openvswitch" or (neutron_plugin_agent == "ovn" and neutron_ovn_dhcp_agent | bool) %}
interface_driver = openvswitch
-{% elif neutron_plugin_agent == "linuxbridge" %}
-interface_driver = linuxbridge
{% endif %}
{% if enable_nova_fake | bool %}
diff --git a/etc/kolla/globals.yml b/etc/kolla/globals.yml
index 9d4f00a0a..38aab5c60 100644
--- a/etc/kolla/globals.yml
+++ b/etc/kolla/globals.yml
@@ -160,9 +160,7 @@ workaround_ansible_issue_8743: yes
# addresses for that reason.
#neutron_external_interface: "eth1"
-# Valid options are [ openvswitch, ovn, linuxbridge ]
-# Do note linuxbridge is *EXPERIMENTAL* in Neutron since Zed and it requires extra tweaks to config to be usable.
-# For details, see: https://docs.openstack.org/neutron/latest/admin/config-experimental-framework.html
+# Valid options are [ openvswitch, ovn ]
#neutron_plugin_agent: "openvswitch"
# Valid options are [ internal, infoblox ]
@@ -421,7 +419,7 @@ workaround_ansible_issue_8743: yes
#enable_opensearch: "{{ enable_central_logging | bool or enable_osprofiler | bool or (enable_cloudkitty | bool and cloudkitty_storage_backend == 'opensearch') }}"
#enable_opensearch_dashboards: "{{ enable_opensearch | bool }}"
#enable_opensearch_dashboards_external: "{{ enable_opensearch_dashboards | bool }}"
-#enable_openvswitch: "{{ enable_neutron | bool and neutron_plugin_agent != 'linuxbridge' }}"
+#enable_openvswitch: "{{ enable_neutron }}"
#enable_ovn: "{{ enable_neutron | bool and neutron_plugin_agent == 'ovn' }}"
#enable_ovs_dpdk: "no"
#enable_osprofiler: "no"
diff --git a/releasenotes/notes/remove-neutron-linuxbridge-b1a2457e848709f7.yaml b/releasenotes/notes/remove-neutron-linuxbridge-b1a2457e848709f7.yaml
new file mode 100644
index 000000000..f5625e782
--- /dev/null
+++ b/releasenotes/notes/remove-neutron-linuxbridge-b1a2457e848709f7.yaml
@@ -0,0 +1,5 @@
+---
+upgrade:
+ - |
+ Support for Linux Bridge mechanism driver has been removed. The driver was
+ already removed from neutron.