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)