feat: upgrade to bobcat (#887)

diff --git a/images/Earthfile b/images/Earthfile
index f5ff111..21cd0d8 100644
--- a/images/Earthfile
+++ b/images/Earthfile
@@ -29,17 +29,23 @@
     mkdir -p /etc/${PROJECT} /var/log/${PROJECT} /var/lib/${PROJECT} /var/cache/${PROJECT} && \
     chown -Rv ${PROJECT}:${PROJECT} /etc/${PROJECT} /var/log/${PROJECT} /var/lib/${PROJECT} /var/cache/${PROJECT}
 
-APPLY_PATCHES:
-  COMMAND
-  COPY --if-exists patches /patches
-  IF [ -d /patches ]
-    RUN \
-      apt-get update && \
-      apt-get install -y patch && \
-      for patch in /patches/*.patch; do \
-        patch -d /var/lib/openstack/lib/python3.10/site-packages/ -p1 < $patch; \
-      done && \
-      apt-get purge -y --auto-remove patch && \
-      apt-get clean && \
-      rm -rf /var/lib/apt/lists/*
-  END
+fetch-gerrit-patch:
+  FROM ./base+image
+  DO +APT_INSTALL --PACKAGES "ca-certificates curl git jq"
+  ARG --required IMAGE
+  ARG PROJECT=${IMAGE}
+  ARG --required CHANGE
+  ARG PROJECT_REF=master
+  DO ./openstack-service+GIT_CHECKOUT \
+    --PROJECT=${PROJECT} \
+    --PROJECT_REF=${PROJECT_REF}
+  ARG REF=$(curl "https://review.opendev.org/changes/?q=${CHANGE}&o=CURRENT_REVISION" | tail -1 | jq -r '.[0].revisions[].ref')
+  COPY ${IMAGE}/patches/${PROJECT} /patches
+  RUN \
+    git fetch https://review.opendev.org/openstack/${PROJECT} ${REF} && \
+    git format-patch -1 --output-directory /gerrit FETCH_HEAD
+  ARG PATCH_ID=$(ls -1 /patches | wc -l | xargs printf "%04d")
+  RUN \
+    cp /gerrit/0001-* \
+    /patches/${PATCH_ID}-$(basename /gerrit/*.patch | sed 's/0001-//')
+  SAVE ARTIFACT /patches AS LOCAL ${IMAGE}/patches/${PROJECT}