diff --git a/charts/argocd-understack/values.yaml b/charts/argocd-understack/values.yaml index 1fbeb8ef1..21c72de3a 100644 --- a/charts/argocd-understack/values.yaml +++ b/charts/argocd-understack/values.yaml @@ -407,7 +407,7 @@ site: wave: 2 # -- Chart version for Neutron # renovate: datasource=helm depName=neutron registryUrl=https://tarballs.opendev.org/openstack/openstack-helm - chartVersion: 2026.1.41+7c81bea7c + chartVersion: 2026.1.47+6a45d0ecf # -- Placement (Placement Service) placement: diff --git a/components/images-openstack.yaml b/components/images-openstack.yaml index 490161535..d86ccb51a 100644 --- a/components/images-openstack.yaml +++ b/components/images-openstack.yaml @@ -41,11 +41,14 @@ images: neutron_l2gw: "ghcr.io/rackerlabs/understack/neutron:2026.1" neutron_linuxbridge_agent: "ghcr.io/rackerlabs/understack/neutron:2026.1" neutron_metadata: "ghcr.io/rackerlabs/understack/neutron:2026.1" - neutron_ovn_metadata: "ghcr.io/rackerlabs/understack/neutron:2026.1" + neutron_ovn_metadata_agent: "ghcr.io/rackerlabs/understack/neutron:2026.1" neutron_openvswitch_agent: "ghcr.io/rackerlabs/understack/neutron:2026.1" neutron_server: "ghcr.io/rackerlabs/understack/neutron:2026.1" neutron_rpc_server: "ghcr.io/rackerlabs/understack/neutron:2026.1" neutron_ovn_maintenance_worker: "ghcr.io/rackerlabs/understack/neutron:2026.1" + neutron_ironic_agent: "ghcr.io/rackerlabs/understack/neutron:2026.1" + neutron_ironic_agent_init: "ghcr.io/rackerlabs/understack/neutron:2026.1" + neutron_periodic_worker: "ghcr.io/rackerlabs/understack/neutron:2026.1" neutron_bagpipe_bgp: "ghcr.io/rackerlabs/understack/neutron:2026.1" neutron_netns_cleanup_cron: "ghcr.io/rackerlabs/understack/neutron:2026.1" diff --git a/components/neutron/values.yaml b/components/neutron/values.yaml index fd8bf06e0..f000c2acd 100644 --- a/components/neutron/values.yaml +++ b/components/neutron/values.yaml @@ -87,6 +87,20 @@ conf: default_availability_zones: "" # add 50 to the max MTU we want of 9000 to handle Neutron's -50 for VXLAN type global_physnet_mtu: 9050 + l2vni: + # networking-baremetal ships an L2VNI trunk reconciler that manages + # trunk subports for network nodes off OVN ha_chassis_group membership. + # We do not use it, neutron-understack owns baremetal VLAN binding here. + # Both flags have to be off: the agent initializes the trunk manager if + # either one is set, and the event-driven path reconciles on every OVN + # localnet port change regardless of the periodic flag. + enable_l2vni_trunk_reconciliation: false + enable_l2vni_trunk_reconciliation_events: false + # Only read when the reconciler above is turned back on. It defaults to + # 'geneve', which is not in our ml2 type_drivers, so creating the anchor + # networks fails outright instead of falling back. 'vxlan' is the only + # other accepted value. + l2vni_subport_anchor_network_type: "vxlan" oslo_messaging_notifications: driver: messagingv2 oslo_messaging_rabbit: @@ -136,11 +150,19 @@ pod: neutron_ovn_maintenance_worker: - secret: name: neutron-ks-etc + neutron_rpc_server: + - secret: + name: neutron-ks-etc + neutron_periodic_worker: + - secret: + name: neutron-ks-etc use_fqdn: neutron_agent: false replicas: server: 4 + # More than one so agent state reports survive a rollout or node drain. + rpc_server: 2 lifecycle: disruption_budget: server: @@ -255,18 +277,17 @@ manifests: # - neutron-metadata-agent # - neutron-ovs-agent # - neutron-sriov-agent - # - neutron-rpc-agent (this sends requests to the various agents) # https://docs.openstack.org/ironic/latest/admin/ovn-networking.html daemonset_dhcp_agent: false daemonset_l3_agent: false daemonset_lb_agent: false daemonset_metadata_agent: false daemonset_ovs_agent: false - deployment_rpc_server: false + # neutron-server runs under uWSGI, which serves the API only. The RPC + # server is what receives report_state and get_agents from agents, so + # neutron-ironic-agent cannot register without it. + deployment_rpc_server: true deployment_ovn_maintenance_worker: true - # The janitor only needs the OVN maintenance worker. The chart enables the - # generic periodic worker by default; disable it. - deployment_periodic_worker: false daemonset_sriov_agent: false daemonset_l2gw_agent: false daemonset_bagpipe_bgp: false diff --git a/containers/neutron/Dockerfile b/containers/neutron/Dockerfile index 0ef7b9c27..2500d28e0 100644 --- a/containers/neutron/Dockerfile +++ b/containers/neutron/Dockerfile @@ -15,6 +15,11 @@ ARG NEUTRON_LIB_GIT_REF=6d0367183cc92656ba449acefd830cb4e11f2f5b ADD --keep-git-dir=true https://github.com/rackerlabs/neutron-lib.git#${NEUTRON_LIB_GIT_REF} /src/neutron-lib RUN git -C /src/neutron-lib fetch --unshallow --tags +# renovate: name=openstack/networking-baremetal repo=https://github.com/openstack/networking-baremetal.git branch=stable/2026.1 +ARG NETWORKING_BAREMETAL_GIT_REF=e713f05659b1bf2794a462ab8aa13ee367ef4045 +ADD --keep-git-dir=true https://github.com/openstack/networking-baremetal.git#${NETWORKING_BAREMETAL_GIT_REF} /src/networking-baremetal +RUN git -C /src/networking-baremetal fetch --unshallow --tags + COPY python/neutron-understack /src/neutron-understack ARG OPENSTACK_VERSION="required_argument" @@ -32,6 +37,7 @@ RUN --mount=type=cache,target=/root/.cache/uv \ --constraint /upper-constraints.txt \ /src/neutron \ /src/neutron-lib \ + /src/networking-baremetal \ /src/neutron-understack ARG OPENSTACK_VERSION="required_argument"