From 44ec667e8683b77e794b4005af06f7c2c18bbfef Mon Sep 17 00:00:00 2001 From: OpenStack Release Bot Date: Wed, 25 Sep 2024 10:09:28 +0000 Subject: [PATCH 01/18] Update .gitreview for stable/2024.2 Change-Id: Ia70535261f4f30c869ca15dfa0bc487c872460d4 --- .gitreview | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitreview b/.gitreview index e1bf63ba7a..5c5c3441f2 100644 --- a/.gitreview +++ b/.gitreview @@ -2,3 +2,4 @@ host=review.opendev.org port=29418 project=openstack/devstack.git +defaultbranch=stable/2024.2 From d46e7b494312439525d3884b9e9376ca194eb661 Mon Sep 17 00:00:00 2001 From: OpenStack Release Bot Date: Wed, 25 Sep 2024 10:09:30 +0000 Subject: [PATCH 02/18] Update TOX_CONSTRAINTS_FILE for stable/2024.2 Update the URL to the upper-constraints file to point to the redirect rule on releases.openstack.org so that anyone working on this branch will switch to the correct upper-constraints list automatically when the requirements repository branches. Until the requirements repository has as stable/2024.2 branch, tests will continue to use the upper-constraints list on master. Change-Id: Ia6e655a69f595cdbe8a92ab9febbcb3338f1d5a8 --- tox.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tox.ini b/tox.ini index 26cd68c031..6ba7047315 100644 --- a/tox.ini +++ b/tox.ini @@ -35,7 +35,7 @@ commands = bash -c "find {toxinidir} \ [testenv:docs] deps = - -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} + -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/2024.2} -r{toxinidir}/doc/requirements.txt allowlist_externals = bash setenv = From e7bd8f29fa63e211c54bb57bcefbfc53e0930c6e Mon Sep 17 00:00:00 2001 From: Ghanshyam Mann Date: Wed, 25 Sep 2024 12:01:22 -0700 Subject: [PATCH 03/18] Update branches for stable/2024.2 Change-Id: I5cc08c630cd115e67427cf0e39e92e5e712478db --- stackrc | 2 +- tests/test_libs_from_pypi.sh | 12 ------------ 2 files changed, 1 insertion(+), 13 deletions(-) diff --git a/stackrc b/stackrc index 0b3e1c61da..30ca57112e 100644 --- a/stackrc +++ b/stackrc @@ -15,7 +15,7 @@ source $RC_DIR/functions # Set the target branch. This is used so that stable branching # does not need to update each repo below. -TARGET_BRANCH=master +TARGET_BRANCH=stable/2024.2 # Cycle trailing projects need to branch later than the others. TRAILING_TARGET_BRANCH=master diff --git a/tests/test_libs_from_pypi.sh b/tests/test_libs_from_pypi.sh index 839e3a1328..c30ba728ba 100755 --- a/tests/test_libs_from_pypi.sh +++ b/tests/test_libs_from_pypi.sh @@ -96,19 +96,7 @@ function test_libs_exist { echo "test_libs_exist PASSED" } -function test_branch_master { - for lib in $ALL_LIBS; do - if [[ ${GITBRANCH[$lib]} != "master" ]]; then - echo "GITBRANCH for $lib not master (${GITBRANCH[$lib]})" - exit 1 - fi - done - - echo "test_branch_master PASSED" -} - set -o errexit test_libs_exist -test_branch_master test_all_libs_upto_date From ad3dd7614bfa5fdc6cc7538a0d04ab6856d9d114 Mon Sep 17 00:00:00 2001 From: Ghanshyam Mann Date: Tue, 8 Oct 2024 18:45:52 -0700 Subject: [PATCH 04/18] Stop installing Tempest at system wide for stable branch As added in notes for INSTALL_TEMPEST variable we need to set this as False for stable branch so that devstack does not install Tempest at system wide. Change-Id: I5057611be8cb24d70541eb2af1fe85f47a0c57eb --- lib/tempest | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/tempest b/lib/tempest index 310db2daa6..1a4e05c740 100644 --- a/lib/tempest +++ b/lib/tempest @@ -59,7 +59,7 @@ BUILD_TIMEOUT=${BUILD_TIMEOUT:-196} # This must be False on stable branches, as master tempest # deps do not match stable branch deps. Set this to True to # have tempest installed in DevStack by default. -INSTALL_TEMPEST=${INSTALL_TEMPEST:-"True"} +INSTALL_TEMPEST=${INSTALL_TEMPEST:-"False"} # This variable is passed directly to pip install inside the common tox venv # that is created From 90c04a7049b6804e4f29d8c7fd8046dc7391bee9 Mon Sep 17 00:00:00 2001 From: Ghanshyam Mann Date: Tue, 8 Oct 2024 18:51:50 -0700 Subject: [PATCH 05/18] Cap max microversions for stable/2024.2 This commit cap the max microversions for compute, volume and placement API for stable/2024.2. Compute - https://github.com/openstack/nova/blob/master/nova/api/openstack/compute/rest_api_version_history.rst#296-maximum-in-20241-caracal Volume - https://github.com/openstack/cinder/blob/master/cinder/api/openstack/rest_api_version_history.rst#371 Placement - https://github.com/openstack/placement/blob/master/placement/rest_api_version_history.rst#139---support-for-the-any-traits-syntax-in-the-required-parameter Change-Id: I5a76ea2b99b8539326ccd9e55d16f8947416c204 --- lib/tempest | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/tempest b/lib/tempest index 1a4e05c740..1cd498a527 100644 --- a/lib/tempest +++ b/lib/tempest @@ -470,11 +470,11 @@ function configure_tempest { # Compute Features # Set the microversion range for compute tests. # This is used to run the Nova microversions tests. - # Setting [None, latest] range of microversion which allow Tempest to run all microversions tests. + # Setting [None, 2.96] range of microversion which allow Tempest to run available microversions tests on stable/2024.2. # NOTE- To avoid microversion tests failure on stable branch, we need to change "tempest_compute_max_microversion" # for stable branch on each release which should be changed from "latest" to max supported version of that release. local tempest_compute_min_microversion=${TEMPEST_COMPUTE_MIN_MICROVERSION:-None} - local tempest_compute_max_microversion=${TEMPEST_COMPUTE_MAX_MICROVERSION:-"latest"} + local tempest_compute_max_microversion=${TEMPEST_COMPUTE_MAX_MICROVERSION:-"2.96"} # Reset microversions to None where v2.0 is running which does not support microversion. # Both "None" means no microversion testing. if [[ "$TEMPEST_COMPUTE_TYPE" == "compute_legacy" ]]; then @@ -581,7 +581,7 @@ function configure_tempest { iniset $TEMPEST_CONFIG volume backup_driver swift fi local tempest_volume_min_microversion=${TEMPEST_VOLUME_MIN_MICROVERSION:-None} - local tempest_volume_max_microversion=${TEMPEST_VOLUME_MAX_MICROVERSION:-"latest"} + local tempest_volume_max_microversion=${TEMPEST_VOLUME_MAX_MICROVERSION:-"3.71"} if [ "$tempest_volume_min_microversion" == "None" ]; then inicomment $TEMPEST_CONFIG volume min_microversion else @@ -636,11 +636,11 @@ function configure_tempest { # Placement Features # Set the microversion range for placement. - # Setting [None, latest] range of microversion which allow Tempest to run all microversions tests. + # Setting [None, 1.39] range of microversion which allow Tempest to run available microversions tests on stable/2024.2. # NOTE- To avoid microversion tests failure on stable branch, we need to change "tempest_placement_max_microversion" # for stable branch on each release which should be changed from "latest" to max supported version of that release. local tempest_placement_min_microversion=${TEMPEST_PLACEMENT_MIN_MICROVERSION:-None} - local tempest_placement_max_microversion=${TEMPEST_PLACEMENT_MAX_MICROVERSION:-"latest"} + local tempest_placement_max_microversion=${TEMPEST_PLACEMENT_MAX_MICROVERSION:-"1.39"} if [ "$tempest_placement_min_microversion" == "None" ]; then inicomment $TEMPEST_CONFIG placement min_microversion else From ae4e1d626d723bfa08d9556bb6fb1df406d1f0a8 Mon Sep 17 00:00:00 2001 From: Ghanshyam Mann Date: Tue, 8 Oct 2024 18:59:57 -0700 Subject: [PATCH 06/18] Cap stable/2024.2 network, swift, volume api_extensions for tempest This commit cap the network, volume and swift extensions on Tempest's config option api_extensions. In 2024.2, new extension in neutron are: - ag-creation - quota-check-limit-default - port-trusted-vif - uplink-status-propagation-updatable and no new extensions in swift and cinder. Change-Id: Ie04f2504b488bd11fbe1d474b24c5a6601b508c3 --- lib/tempest | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 54 insertions(+), 3 deletions(-) diff --git a/lib/tempest b/lib/tempest index 1cd498a527..9fa76b2fd4 100644 --- a/lib/tempest +++ b/lib/tempest @@ -781,7 +781,44 @@ function configure_tempest { DISABLE_NETWORK_API_EXTENSIONS+=", l3_agent_scheduler" fi - local network_api_extensions=${NETWORK_API_EXTENSIONS:-"all"} + DEFAULT_NET_EXT="address-scope,agent,allowed-address-pairs,auto-allocated-topology" + DEFAULT_NET_EXT+=",availability_zone,binding,default-subnetpools,dhcp_agent_scheduler" + DEFAULT_NET_EXT+=",dvr,ext-gw-mode,external-net,extra_dhcp_opt,extraroute,flavors" + DEFAULT_NET_EXT+=",l3-flavors,l3-ha,l3_agent_scheduler,multi-provider,net-mtu" + DEFAULT_NET_EXT+=",network-ip-availability,network_availability_zone,pagination" + DEFAULT_NET_EXT+=",port-security,project-id,provider,quotas,quota_details,rbac-policies" + DEFAULT_NET_EXT+=",revision-if-match,router,router_availability_zone,security-group,service-type,sorting" + DEFAULT_NET_EXT+=",standard-attr-description,standard-attr-revisions,standard-attr-tag,standard-attr-timestamp" + DEFAULT_NET_EXT+=",subnet-service-types,subnet_allocation,net-mtu-writable,ip-substring-filtering" + DEFAULT_NET_EXT+=",availability_zone_filter,filter-validation,empty-string-filtering,port-mac-address-regenerate" + DEFAULT_NET_EXT+=",port-security-groups-filtering,fip-port-details,binding-extended" + DEFAULT_NET_EXT+=",subnet_onboard,l3-port-ip-change-not-allowed,agent-resources-synced" + DEFAULT_NET_EXT+=",floatingip-pools,rbac-security-groups,subnetpool-prefix-ops,router-admin-state-down-before-update" + DEFAULT_NET_EXT+=",rbac-subnetpool,tag-ports-during-bulk-creation,stateful-security-group,address-group,extraroute-atomic" + DEFAULT_NET_EXT+=",port-numa-affinity-policy,rbac-address-scope,security-groups-remote-address-group,trunk,trunk-details" + DEFAULT_NET_EXT+=",rbac-address-group,port-device-profile" + DEFAULT_NET_EXT+=",multiple-external-gateways,qos-pps-minimum,l3-ext-ndp-proxy,rbac-bgpvpn" + DEFAULT_NET_EXT+=",qos-pps,ecmp_routes,bgp,floating-ip-port-forwarding-port-ranges" + # New in Yoga + DEFAULT_NET_EXT+=",security-groups-shared-filtering,security-groups-normalized-cidr,quota-check-limit" + DEFAULT_NET_EXT+=",port-resource-request-groups" + # New in Zed + DEFAULT_NET_EXT+=",port-mac-override,floating-ip-port-forwarding-detail,network-cascade-delete" + # New in 2023.1 + DEFAULT_NET_EXT+=",port-hints,floating-ip-distributed" + # New in 2023.2 + DEFAULT_NET_EXT+=",port-hint-ovs-tx-steering,enable-default-route-bfd" + DEFAULT_NET_EXT+=",enable-default-route-ecmp,standard-attr-fwaas-v2" + DEFAULT_NET_EXT+=",allowed-address-pairs-atomic,network_ha" + DEFAULT_NET_EXT+=",security-groups-rules-belongs-to-default-sg" + DEFAULT_NET_EXT+=",port-hardware-offload-type" + # New in 2024.1 + DEFAULT_NET_EXT+=",vpn-aes-ccm-gcm,tap-mirror,subnet-external-network" + DEFAULT_NET_EXT+=",port-numa-affinity-policy-socket" + # New in 2024.2 + DEFAULT_NET_EXT+=",tag-creation,quota-check-limit-default,port-trusted-vif" + DEFAULT_NET_EXT+=",uplink-status-propagation-updatable" + local network_api_extensions=${NETWORK_API_EXTENSIONS:-$DEFAULT_NET_EXT} if [[ ! -z "$DISABLE_NETWORK_API_EXTENSIONS" ]]; then # Enabled extensions are either the ones explicitly specified or those available on the API endpoint network_api_extensions=${NETWORK_API_EXTENSIONS:-$(iniget $tmp_cfg_file network-feature-enabled api_extensions | tr -d " ")} @@ -793,7 +830,10 @@ function configure_tempest { fi iniset $TEMPEST_CONFIG network-feature-enabled api_extensions $network_api_extensions # Swift API Extensions - local object_storage_api_extensions=${OBJECT_STORAGE_API_EXTENSIONS:-"all"} + DEFAULT_SWIFT_OPT="account_quotas,bulk_delete,bulk_upload,container_quotas" + DEFAULT_SWIFT_OPT+=",container_sync,crossdomain,formpost,ratelimit,slo" + DEFAULT_SWIFT_OPT+=",staticweb,tempauth,tempurl,versioned_writes" + local object_storage_api_extensions=${OBJECT_STORAGE_API_EXTENSIONS:-$DEFAULT_SWIFT_OPT} if [[ ! -z "$DISABLE_OBJECT_STORAGE_API_EXTENSIONS" ]]; then # Enabled extensions are either the ones explicitly specified or those available on the API endpoint object_storage_api_extensions=${OBJECT_STORAGE_API_EXTENSIONS:-$(iniget $tmp_cfg_file object-storage-feature-enabled discoverable_apis | tr -d " ")} @@ -802,7 +842,18 @@ function configure_tempest { fi iniset $TEMPEST_CONFIG object-storage-feature-enabled discoverable_apis $object_storage_api_extensions # Cinder API Extensions - local volume_api_extensions=${VOLUME_API_EXTENSIONS:-"all"} + DEFAULT_VOL_EXT="OS-SCH-HNT,backups,capabilities,cgsnapshots,consistencygroups" + DEFAULT_VOL_EXT+=",encryption,os-admin-actions,os-availability-zone" + DEFAULT_VOL_EXT+=",os-extended-services,os-extended-snapshot-attributes" + DEFAULT_VOL_EXT+=",os-hosts,os-quota-class-sets,os-quota-sets" + DEFAULT_VOL_EXT+=",os-services,os-snapshot-actions,os-snapshot-manage" + DEFAULT_VOL_EXT+=",os-snapshot-unmanage,os-types-extra-specs,os-types-manage" + DEFAULT_VOL_EXT+=",os-used-limits,os-vol-host-attr,os-vol-image-meta" + DEFAULT_VOL_EXT+=",os-vol-mig-status-attr,os-vol-tenant-attr,os-volume-actions" + DEFAULT_VOL_EXT+=",os-volume-encryption-metadata,os-volume-manage" + DEFAULT_VOL_EXT+=",os-volume-transfer,os-volume-type-access" + DEFAULT_VOL_EXT+=",os-volume-unmanage,qos-specs,scheduler-stats" + local volume_api_extensions=${VOLUME_API_EXTENSIONS:-$DEFAULT_VOL_EXT} if [[ ! -z "$DISABLE_VOLUME_API_EXTENSIONS" ]]; then # Enabled extensions are either the ones explicitly specified or those available on the API endpoint volume_api_extensions=${VOLUME_API_EXTENSIONS:-$(iniget $tmp_cfg_file volume-feature-enabled api_extensions | tr -d " ")} From 9530f1844a1cf4fb0effe370ff65b520ed538a15 Mon Sep 17 00:00:00 2001 From: Stephen Finucane Date: Tue, 3 Dec 2024 17:04:39 +0000 Subject: [PATCH 07/18] Install setuptools 'core' extra Under as-yet-unidentified conditions, we can end up with a version of packaging that is too old for the version of latest version of setuptools. This is a known issue and expected behavior and per [1] $subject is the preferred resolution. [1] https://github.com/pypa/setuptools/issues/4483#issuecomment-2237219597 Change-Id: I9232f3fae1598297e83c4ea37339896f7dcbd44f Signed-off-by: Stephen Finucane (cherry picked from commit 320c2bf42ae41d751c72d80a6c85b26f3f6951bd) --- inc/python | 4 ++-- lib/infra | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/inc/python b/inc/python index 2083b74dc1..19b0563902 100644 --- a/inc/python +++ b/inc/python @@ -40,8 +40,8 @@ function setup_devstack_virtualenv { # Using system site packages to enable nova to use libguestfs. # This package is currently installed via the distro and not # available on pypi. - python$PYTHON3_VERSION -m venv --system-site-packages $DEVSTACK_VENV - pip_install -U pip setuptools + $PYTHON -m venv --system-site-packages "${DEVSTACK_VENV}" + pip_install -U pip setuptools[core] #NOTE(rpittau): workaround for simplejson removal in osc # https://review.opendev.org/c/openstack/python-openstackclient/+/920001 pip_install -U simplejson diff --git a/lib/infra b/lib/infra index 2aad00354a..f4760c352c 100644 --- a/lib/infra +++ b/lib/infra @@ -31,7 +31,7 @@ function install_infra { local PIP_VIRTUAL_ENV="$REQUIREMENTS_DIR/.venv" [ ! -d $PIP_VIRTUAL_ENV ] && ${VIRTUALENV_CMD} $PIP_VIRTUAL_ENV # We don't care about testing git pbr in the requirements venv. - PIP_VIRTUAL_ENV=$PIP_VIRTUAL_ENV pip_install -U pbr setuptools + PIP_VIRTUAL_ENV=$PIP_VIRTUAL_ENV pip_install -U pbr setuptools[core] PIP_VIRTUAL_ENV=$PIP_VIRTUAL_ENV pip_install $REQUIREMENTS_DIR # Unset the PIP_VIRTUAL_ENV so that PBR does not end up trapped From 6285006ce2f522ec19a6c1cba576d30e8840b70d Mon Sep 17 00:00:00 2001 From: Rajat Dhasmana Date: Wed, 8 Jan 2025 18:43:40 +0530 Subject: [PATCH 08/18] Update glance image size limit The image size limit for glance using the unified limits is set to 1000MB (~1GB). This is pretty low given that a volume's minimum size is 1GB and when uploaded to glance fills out the whole limit. The limit issue can also be seen by a recent tempest change[1] where uploading two volumes failed[2] across various jobs due to this limit. We do have a config option in devstack ``GLANCE_LIMIT_IMAGE_SIZE_TOTAL`` but that will need to be configured for various jobs and a 2GB seems to be a sensible default which this patch configures. [1] https://review.opendev.org/c/openstack/tempest/+/938592 [2] Jan 07 23:05:33 devstack-ceph cinder-volume[909965]: ERROR oslo_messaging.rpc.server cinder.exception.ImageLimitExceeded: HTTP 413 Request Entity Too Large: The request returned a 413 Request Entity Too Large. This generally means that rate limiting or a quota threshold was breached.: The response body:: Project dfe8648c188d46409349eac2c449c0b4 is over a limit for [Resource image_size_total is over limit of 1000 due to current usage 1024 and delta 0] Change-Id: I533b7444e5f71275ea3d5c18914e306b1dbbc5cb (cherry picked from commit 9a1cdbc3c809f785ad01a3bbdfef8f552eafce30) --- lib/glance | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/glance b/lib/glance index 274687112e..5525094d46 100644 --- a/lib/glance +++ b/lib/glance @@ -128,7 +128,7 @@ GLANCE_UWSGI=$GLANCE_BIN_DIR/glance-wsgi-api GLANCE_UWSGI_CONF=$GLANCE_CONF_DIR/glance-uwsgi.ini # Glance default limit for Devstack -GLANCE_LIMIT_IMAGE_SIZE_TOTAL=${GLANCE_LIMIT_IMAGE_SIZE_TOTAL:-1000} +GLANCE_LIMIT_IMAGE_SIZE_TOTAL=${GLANCE_LIMIT_IMAGE_SIZE_TOTAL:-2000} # If wsgi mode is uwsgi run glance under uwsgi, else default to eventlet # TODO(mtreinish): Remove the eventlet path here and in all the similar From 5675bd73381388c0ca293c38faa842852fc00e5a Mon Sep 17 00:00:00 2001 From: Slawek Kaplonski Date: Thu, 30 Jan 2025 12:43:30 +0100 Subject: [PATCH 09/18] Remove leftover from the usage of the removed lib/neutron module In the patch [1] lib/neutron module was removed completely but it left call to the non existing currently function 'start_neutron_api' when the neutron-api service is enabled. Devstack should start neutron in the same way in case when q-svc or neutron-api service is enabled and this patch is removing that leftover call to the 'start_neutron_api' function and make it behave the same way for both service names. Additionally this patch adds service "neutron-api" to be checked when initial networks are going to be created. It is like that as just one of the services "q-svc" or "neutron-api" is enough to create those initial networks. [1] https://review.opendev.org/c/openstack/devstack/+/865014 Related-bug: #2096912 Change-Id: I1287af6a31f60b4e522f0ce3ea525e3336ffd8ba (cherry picked from commit a08a53de424e3ed8cad4cbaf566d0b08f8ad5199) --- stack.sh | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/stack.sh b/stack.sh index dcfd398c01..98f976a1f6 100755 --- a/stack.sh +++ b/stack.sh @@ -1304,10 +1304,7 @@ if is_service_enabled ovn-controller ovn-controller-vtep; then start_ovn_services fi -if is_service_enabled neutron-api; then - echo_summary "Starting Neutron" - start_neutron_api -elif is_service_enabled q-svc; then +if is_service_enabled q-svc neutron-api; then echo_summary "Starting Neutron" configure_neutron_after_post_config start_neutron_service_and_check @@ -1324,7 +1321,7 @@ if is_service_enabled neutron; then start_neutron fi # Once neutron agents are started setup initial network elements -if is_service_enabled q-svc && [[ "$NEUTRON_CREATE_INITIAL_NETWORKS" == "True" ]]; then +if is_service_enabled q-svc neutron-api && [[ "$NEUTRON_CREATE_INITIAL_NETWORKS" == "True" ]]; then echo_summary "Creating initial neutron network elements" # Here's where plugins can wire up their own networks instead # of the code in lib/neutron_plugins/services/l3 From e82b546b2a1dab4c4f3cdd46490fefd600e5d18f Mon Sep 17 00:00:00 2001 From: Rodolfo Alonso Hernandez Date: Thu, 13 Feb 2025 08:39:24 +0000 Subject: [PATCH 10/18] [eventlet-removal] Remove "logger" mechanism from ML2/OVN CI jobs The "logger" mechanism is a testing class that is still calling monkey_patch. This mechanism driver is not relevant nor neccessary for the ML2/OVN CI jobs. Related-Bug: #2114732 Signed-off-by: Rodolfo Alonso Hernandez Change-Id: I539b202ca81f62f4ae26b5275fd6b245d2066fe7 (cherry picked from commit 754f1c66f53240e3ebda53fbb95bfdeee05b5796) --- lib/neutron_plugins/ovn_agent | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/neutron_plugins/ovn_agent b/lib/neutron_plugins/ovn_agent index be3a9e78b2..87605ae1bb 100644 --- a/lib/neutron_plugins/ovn_agent +++ b/lib/neutron_plugins/ovn_agent @@ -161,8 +161,10 @@ fi # Defaults Overwrite # ------------------ - -Q_ML2_PLUGIN_MECHANISM_DRIVERS=${Q_ML2_PLUGIN_MECHANISM_DRIVERS:-ovn,logger} +# NOTE(ralonsoh): during the eventlet removal, the "logger" mech +# driver has been removed from this list. Re-add it once the removal +# is finished or the mech driver does not call monkey_patch(). +Q_ML2_PLUGIN_MECHANISM_DRIVERS=${Q_ML2_PLUGIN_MECHANISM_DRIVERS:-ovn} Q_ML2_PLUGIN_TYPE_DRIVERS=${Q_ML2_PLUGIN_TYPE_DRIVERS:-local,flat,vlan,geneve} Q_ML2_TENANT_NETWORK_TYPE=${Q_ML2_TENANT_NETWORK_TYPE:-"geneve"} Q_ML2_PLUGIN_GENEVE_TYPE_OPTIONS=${Q_ML2_PLUGIN_GENEVE_TYPE_OPTIONS:-"vni_ranges=1:65536"} From 2bd39def313bf278b5bb67383a715059f36131a5 Mon Sep 17 00:00:00 2001 From: Rodolfo Alonso Hernandez Date: Thu, 17 Jul 2025 10:28:57 +0000 Subject: [PATCH 11/18] Remove the nodeset "devstack-single-node-opensuse-15" The nodepool "opensuse-15" is no longer available since [1]. [1]https://review.opendev.org/c/openstack/project-config/+/955214 Signed-off-by: Rodolfo Alonso Hernandez Change-Id: I0c48ee0b7daded1f10eda5861ae1ac0bcedd168c --- .zuul.yaml | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/.zuul.yaml b/.zuul.yaml index a1c251a398..c4acc45315 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -48,16 +48,6 @@ nodes: - controller -- nodeset: - name: devstack-single-node-opensuse-15 - nodes: - - name: controller - label: opensuse-15 - groups: - - name: tempest - nodes: - - controller - - nodeset: name: devstack-single-node-debian-bookworm nodes: From bea1b15527006007ef95b7ff7e81a9f53e2ba3a6 Mon Sep 17 00:00:00 2001 From: Mohammed Naser Date: Tue, 25 Feb 2025 22:54:05 -0500 Subject: [PATCH 12/18] Switch ZSWAP_ZPOOL to zsmalloc The z3fold compressed pages allocator is on it's way out of the Linux kernel and running this on newer systems will give you an error: + lib/host:configure_zswap:45 : echo z3fold z3fold tee: /sys/module/zswap/parameters/zpool: No such file or directory So, get ahead of things and move to the much faster recommended by the kernel developers alternative. [1]: https://lore.kernel.org/all/20240904233343.933462-1-yosryahmed@google.com/T/#u Change-Id: I7c137114dd7585d3179a8d5dee818bb379bbcb1f Signed-off-by: Mohammed Naser (cherry picked from commit 5cb2abf79ef103838ab0f922643f4a62ddf16cfb) (cherry picked from commit 62537e6d3e47d46d415c669f51c432d7e8f1bf9e) --- lib/host | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/host b/lib/host index a812c39612..58062eff6b 100644 --- a/lib/host +++ b/lib/host @@ -35,7 +35,7 @@ ENABLE_ZSWAP=$(trueorfalse False ENABLE_ZSWAP) # lz4 is very fast although it does not have the best compression # zstd has much better compression but more latency ZSWAP_COMPRESSOR=${ZSWAP_COMPRESSOR:="lz4"} -ZSWAP_ZPOOL=${ZSWAP_ZPOOL:="z3fold"} +ZSWAP_ZPOOL=${ZSWAP_ZPOOL:="zsmalloc"} function configure_zswap { if [[ $ENABLE_ZSWAP == "True" ]] ; then # Centos 9 stream seems to only support enabling but not run time From 978a231b10a910010378133e9577a39cea255d91 Mon Sep 17 00:00:00 2001 From: Stephen Finucane Date: Tue, 28 Oct 2025 11:24:25 +0000 Subject: [PATCH 13/18] [Stable-Only] Constrain pip to < 25.3 Conflicts: inc/python NOTE(stephenfin): Conflicts are due to the absence of I74b0f93457f91e7d53d54737d52f67075088faca which we don't want to backport. Change-Id: I221a03b2f8314fee66672c23d7ece4eb900c038c Signed-off-by: Stephen Finucane (cherry picked from commit e20d092cba8e5dc0ac8011d0978d0b3f8e732cd3) --- inc/python | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/inc/python b/inc/python index 19b0563902..7e4e461951 100644 --- a/inc/python +++ b/inc/python @@ -41,7 +41,14 @@ function setup_devstack_virtualenv { # This package is currently installed via the distro and not # available on pypi. $PYTHON -m venv --system-site-packages "${DEVSTACK_VENV}" - pip_install -U pip setuptools[core] + # NOTE(stephenfin): stable-only change to prevent us pulling in newer + # versions of pip which removed support for legacy editable installs + # [1]. Some services on this stable branch still hadn't migrated to + # module-based configuration [2]. This is not an issue since 2025.2. + # + # [1] https://pip.pypa.io/en/stable/news/#v25-3 + # [2] https://review.opendev.org/c/openstack/governance/+/902807 + pip_install -U 'pip<25.3' setuptools[core] #NOTE(rpittau): workaround for simplejson removal in osc # https://review.opendev.org/c/openstack/python-openstackclient/+/920001 pip_install -U simplejson From c272c3afb522982006c610537b0fbd45d38b9967 Mon Sep 17 00:00:00 2001 From: Grzegorz Grasza Date: Mon, 14 Jul 2025 12:37:23 +0200 Subject: [PATCH 14/18] keystone: Set user_enabled_default for LDAP domain When using the LDAP identity backend, stack.sh fails during the create_keystone_accounts phase when trying to verify the newly created demo user. This is caused by a BadRequestException from the Keystone API with the error, 'enabled' is a required property. The error occurs because the default LDAP user object created by the DevStack scripts does not contain an attribute that Keystone can map to its mandatory enabled property. This change fixes the issue by adding user_enabled_emulation = True to the domain-specific LDAP configuration in the create_ldap_domain function. This tells Keystone to assume a user is enabled if the attribute is not explicitly defined in their LDAP entry, which resolves the schema incompatibility and allows the script to complete successfully. Signed-off-by: Grzegorz Grasza Change-Id: I15ddf0b88ee93615c318d4845a026ca1e25c3e69 (cherry picked from commit e221349e56414e1cb89c75311bf659bd869e16a7) (cherry picked form commit 3e505e6f524073ccbe6ddc29184afc9019040b46) --- lib/keystone | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/keystone b/lib/keystone index 7d6b05fd41..3fc765f1bf 100644 --- a/lib/keystone +++ b/lib/keystone @@ -642,6 +642,7 @@ function create_ldap_domain { iniset $KEYSTONE_LDAP_DOMAIN_FILE ldap user_name_attribute "cn" iniset $KEYSTONE_LDAP_DOMAIN_FILE ldap user_mail_attribute "mail" iniset $KEYSTONE_LDAP_DOMAIN_FILE ldap user_id_attribute "uid" + iniset $KEYSTONE_LDAP_DOMAIN_FILE ldap user_enabled_emulation "True" iniset $KEYSTONE_LDAP_DOMAIN_FILE ldap user "cn=Manager,dc=openstack,dc=org" iniset $KEYSTONE_LDAP_DOMAIN_FILE ldap url "ldap://localhost" iniset $KEYSTONE_LDAP_DOMAIN_FILE ldap suffix $LDAP_BASE_DN From 07e50fcda49405b9831ed3e928c5f98953fb104c Mon Sep 17 00:00:00 2001 From: Artem Goncharov Date: Fri, 27 Jun 2025 15:05:51 +0200 Subject: [PATCH 15/18] Restart slapd after cleanup A bug in openldap mdb (memory database) causes it to crash in an attempt to delete nonexisting tree, which is exactly what we do in the cleanup. After the coredump it does not start automatically (what maybe make sense to change). The fix is merged in https://bugs.openldap.org/show_bug.cgi?id=10336 but we do not have this fix in Noble. For now try simply to restart the process. Change-Id: Iae597aae345d12a2c82f66342ff40ac0a387eddf Signed-off-by: Artem Goncharov (cherry picked from commit 06633c6c3033cc92329e1849266f4f2ed33d2124) (cherry picked form commit 9d67167eb2b101f9b11a8b093b87c5c8b793df08) --- lib/ldap | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/ldap b/lib/ldap index b0195db258..66c2afc4d5 100644 --- a/lib/ldap +++ b/lib/ldap @@ -82,6 +82,14 @@ function init_ldap { # Remove data but not schemas clear_ldap_state + if is_ubuntu; then + # a bug in OpenLDAP 2.6.7+ + # (https://bugs.openldap.org/show_bug.cgi?id=10336) causes slapd crash + # after deleting nonexisting tree. It is fixed upstream, but Ubuntu is + # still not having a fix in Noble. Try temporarily simly restarting the + # process. + sudo service $LDAP_SERVICE_NAME restart + fi # Add our top level ldap nodes if ldapsearch -x -w $LDAP_PASSWORD -D "$LDAP_MANAGER_DN" -H $LDAP_URL -b "$LDAP_BASE_DN" | grep -q "Success"; then From 24345ce5792b48fba9db15c4c773c2f75ee598a7 Mon Sep 17 00:00:00 2001 From: Stephen Finucane Date: Mon, 9 Feb 2026 11:41:14 +0000 Subject: [PATCH 16/18] [Stable-Only] Pin setuptools setuptools 81.0.0 dropped support for the legacy 'pkg_resources' library. While most users of this (including the all important pbr library) have been updated to remove references to 'pkg_resources' on current master, this is not true for historical releases. Pin the setuptools version used on these historic branches to work around this. Conflicts: inc/python NOTE(stephenfin): Conflicts are due to the absence of I74b0f93457f91e7d53d54737d52f67075088faca which we don't want to backport Change-Id: Icf07fa246b3532f939d20e3cbea32cc0b7b439ed Signed-off-by: Stephen Finucane (cherry picked from commit 94e1ba49e924905363869511bbb93446a6cffff3) (cherry picked from commit 84c7dd2354c51f1a72bd3e19633cc313638b87f1) --- inc/python | 3 ++- lib/infra | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/inc/python b/inc/python index 7e4e461951..2735bce83c 100644 --- a/inc/python +++ b/inc/python @@ -45,10 +45,11 @@ function setup_devstack_virtualenv { # versions of pip which removed support for legacy editable installs # [1]. Some services on this stable branch still hadn't migrated to # module-based configuration [2]. This is not an issue since 2025.2. + # We also pin setuptools to the last version to support pkg_resources. # # [1] https://pip.pypa.io/en/stable/news/#v25-3 # [2] https://review.opendev.org/c/openstack/governance/+/902807 - pip_install -U 'pip<25.3' setuptools[core] + pip_install -U 'pip<25.3' 'setuptools[core]<81.0.0' #NOTE(rpittau): workaround for simplejson removal in osc # https://review.opendev.org/c/openstack/python-openstackclient/+/920001 pip_install -U simplejson diff --git a/lib/infra b/lib/infra index f4760c352c..7f262939f8 100644 --- a/lib/infra +++ b/lib/infra @@ -31,7 +31,9 @@ function install_infra { local PIP_VIRTUAL_ENV="$REQUIREMENTS_DIR/.venv" [ ! -d $PIP_VIRTUAL_ENV ] && ${VIRTUALENV_CMD} $PIP_VIRTUAL_ENV # We don't care about testing git pbr in the requirements venv. - PIP_VIRTUAL_ENV=$PIP_VIRTUAL_ENV pip_install -U pbr setuptools[core] + # NOTE(stephenfin) stable-only change to pin setuptools to the last version + # to support pkg_resources + PIP_VIRTUAL_ENV=$PIP_VIRTUAL_ENV pip_install -U pbr 'setuptools[core]<81.0.0' PIP_VIRTUAL_ENV=$PIP_VIRTUAL_ENV pip_install $REQUIREMENTS_DIR # Unset the PIP_VIRTUAL_ENV so that PBR does not end up trapped From 52370443b386023da97b76e417904b6fa42c6744 Mon Sep 17 00:00:00 2001 From: "Dr. Jens Harbott" Date: Tue, 17 Feb 2026 13:00:07 +0100 Subject: [PATCH 17/18] [Stable-Only] Pin setuptools for tox docs This was somehow missing from the cherry-pick of the original fix [0]. [0] https://review.opendev.org/c/openstack/devstack/+/976107 Signed-off-by: Dr. Jens Harbott Change-Id: Ia13a44428e3fb0ddf95836163a64443c04cfd906 --- tox.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/tox.ini b/tox.ini index 6ba7047315..b28197b558 100644 --- a/tox.ini +++ b/tox.ini @@ -37,6 +37,7 @@ commands = bash -c "find {toxinidir} \ deps = -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/2024.2} -r{toxinidir}/doc/requirements.txt + setuptools<81 allowlist_externals = bash setenv = TOP_DIR={toxinidir} From e5e266335ea76debd4ba0f5354f1db9b5a0b19a0 Mon Sep 17 00:00:00 2001 From: "Dr. Jens Harbott" Date: Mon, 16 Feb 2026 16:21:53 +0100 Subject: [PATCH 18/18] Drop openstack-*-node-bionic nodeset definitions In order to be able to edit these on the master branch, we need to drop them on the stable branches first. Signed-off-by: Dr. Jens Harbott Change-Id: Ibf1bf5454a4dd63b617963b70ce9bfec83de4916 --- .zuul.yaml | 75 ------------------------------------------------------ 1 file changed, 75 deletions(-) diff --git a/.zuul.yaml b/.zuul.yaml index c4acc45315..1693ef641d 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -28,16 +28,6 @@ nodes: - controller -- nodeset: - name: openstack-single-node-bionic - nodes: - - name: controller - label: ubuntu-bionic - groups: - - name: tempest - nodes: - - controller - - nodeset: name: devstack-single-node-centos-9-stream nodes: @@ -201,36 +191,6 @@ nodes: - compute1 -- nodeset: - name: openstack-two-node-bionic - nodes: - - name: controller - label: ubuntu-bionic - - name: compute1 - label: ubuntu-bionic - groups: - # Node where tests are executed and test results collected - - name: tempest - nodes: - - controller - # Nodes running the compute service - - name: compute - nodes: - - controller - - compute1 - # Nodes that are not the controller - - name: subnode - nodes: - - compute1 - # Switch node for multinode networking setup - - name: switch - nodes: - - controller - # Peer nodes for multinode networking setup - - name: peers - nodes: - - compute1 - - nodeset: name: openstack-three-node-focal nodes: @@ -266,41 +226,6 @@ - compute1 - compute2 -- nodeset: - name: openstack-three-node-bionic - nodes: - - name: controller - label: ubuntu-bionic - - name: compute1 - label: ubuntu-bionic - - name: compute2 - label: ubuntu-bionic - groups: - # Node where tests are executed and test results collected - - name: tempest - nodes: - - controller - # Nodes running the compute service - - name: compute - nodes: - - controller - - compute1 - - compute2 - # Nodes that are not the controller - - name: subnode - nodes: - - compute1 - - compute2 - # Switch node for multinode networking setup - - name: switch - nodes: - - controller - # Peer nodes for multinode networking setup - - name: peers - nodes: - - compute1 - - compute2 - - job: name: devstack-base parent: openstack-multinode-fips