Database connectivity workaround for Magnum (#1917)
See: https://bugs.launchpad.net/magnum/+bug/2067345
diff --git a/images/magnum/Dockerfile b/images/magnum/Dockerfile
index cdb28bf..a930684 100644
--- a/images/magnum/Dockerfile
+++ b/images/magnum/Dockerfile
@@ -15,7 +15,10 @@
ARG MAGNUM_GIT_REF=c613ea4e419edc0086116da07e93cf19206746e1
ADD --keep-git-dir=true https://opendev.org/openstack/magnum.git#${MAGNUM_GIT_REF} /src/magnum
RUN git -C /src/magnum fetch --unshallow
+COPY patches/magnum /patches/magnum
+RUN git -C /src/magnum apply --verbose /patches/magnum/*
RUN --mount=type=cache,mode=0755,target=/root/.cache/pip,sharing=private <<EOF bash -xe
+sed -i s/^oslo.db===.*$/oslo.db==14.1.0/ /upper-constraints.txt
pip3 install \
--constraint /upper-constraints.txt \
/src/magnum \
diff --git a/images/magnum/patches/magnum/0000-Revert-Remove-use-of-autocommit.patch b/images/magnum/patches/magnum/0000-Revert-Remove-use-of-autocommit.patch
new file mode 100644
index 0000000..67058bf
--- /dev/null
+++ b/images/magnum/patches/magnum/0000-Revert-Remove-use-of-autocommit.patch
@@ -0,0 +1,41 @@
+From 4f309a12433956d09af30eec5a80129dfd069e36 Mon Sep 17 00:00:00 2001
+From: Mohammed Naser <mnaser@vexxhost.com>
+Date: Tue, 24 Sep 2024 20:12:33 +0000
+Subject: [PATCH] Revert "Remove use of autocommit"
+
+This reverts commit d544698fae220549f68afa218dd252366fe90b27.
+
+Reason for revert: Broken networking.
+
+Change-Id: I002d4825308afb462e698ff69c69977f6da3d9a8
+---
+
+diff --git a/magnum/db/sqlalchemy/api.py b/magnum/db/sqlalchemy/api.py
+index 0ec4380..f6f3087 100644
+--- a/magnum/db/sqlalchemy/api.py
++++ b/magnum/db/sqlalchemy/api.py
+@@ -47,7 +47,9 @@
+ def _create_facade_lazily():
+ global _FACADE
+ if _FACADE is None:
+- _FACADE = db_session.EngineFacade.from_config(CONF)
++ # FIXME(karolinku): autocommit=True it's not compatible with
++ # SQLAlchemy 2.0, and will be removed in future
++ _FACADE = db_session.EngineFacade.from_config(CONF, autocommit=True)
+ if profiler_sqlalchemy:
+ if CONF.profiler.enabled and CONF.profiler.trace_sqlalchemy:
+ profiler_sqlalchemy.add_tracing(sa, _FACADE.get_engine(), "db")
+diff --git a/magnum/db/sqlalchemy/models.py b/magnum/db/sqlalchemy/models.py
+index 92b474d..0b7ae94 100644
+--- a/magnum/db/sqlalchemy/models.py
++++ b/magnum/db/sqlalchemy/models.py
+@@ -93,8 +93,7 @@
+ if session is None:
+ session = db_api.get_session()
+
+- with session.begin():
+- super(MagnumBase, self).save(session)
++ super(MagnumBase, self).save(session)
+
+
+ Base = declarative_base(cls=MagnumBase)