From 72d25d998db2345d6377af58b3967d982c22ecce Mon Sep 17 00:00:00 2001 From: akintewe Date: Wed, 8 Apr 2026 12:16:06 +0100 Subject: [PATCH 1/2] share: fix malformed log format strings in backup continuation handlers The LOG.warning call in the create_backup_continue error handler had %(backup). instead of %(backup)s., and the LOG.exception call in the restore_backup_continue error handler had %(share). instead of %(share)s., causing Python to raise a ValueError: incomplete format when a backup continuation failure occurred. This meant the except blocks would fail before the DB update calls could execute, leaving shares and backups permanently stuck in incorrect states. Closes-Bug: #2147529 Closes-Bug: #2148041 Change-Id: I51cca129e24fd2dc831d0ffacbde526e90da7a86 Signed-off-by: sakumbha (cherry picked from commit 4a9ecb2ded8d2f19b23c625e605d69d312354f1a) --- manila/share/manager.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/manila/share/manager.py b/manila/share/manager.py index 73c1a3f151..b550df03d0 100644 --- a/manila/share/manager.py +++ b/manila/share/manager.py @@ -5653,7 +5653,7 @@ def create_backup_continue(self, context): backup_id) except Exception: LOG.warning("Failed to get progress of share %(share)s " - "backing up in share_backup %(backup).", + "backing up in share_backup %(backup)s.", {'share': share_id, 'backup': backup_id}) self.db.share_update( context, share_id, @@ -5790,7 +5790,7 @@ def restore_backup_continue(self, context): backup_id) except Exception: LOG.exception("Failed to get progress of share_backup " - "%(backup)s restoring in share %(share).", + "%(backup)s restoring in share %(share)s.", {'share': share_id, 'backup': backup_id}) self.db.share_update( context, share_id, From 97856941445dccb2055d7c4015c72fcbf05d8282 Mon Sep 17 00:00:00 2001 From: Goutham Pacha Ravi Date: Sun, 12 Jul 2026 22:05:35 -0700 Subject: [PATCH 2/2] Pull container image from quay.io The container driver's docker image was hosted as a tarball on a personal GitHub account since 2016. Switch to pulling from quay.io/openstack-manila where the image is published by manila-image-elements CI. Also fix import_docker_service_image_ubuntu to handle file:// URLs (copy to $FILES before gunzip) and registry references (docker pull + tag). Change-Id: I6106959f0f2dc894b66f1a2c7b5c4a567fdf72a3 Partial-Bug: #2160440 Signed-off-by: Goutham Pacha Ravi (cherry picked from commit 1334dc19bb4443506b3cd9ba145318ac88d1f35a) --- devstack/plugin.sh | 29 +++++++++++++++++++++-------- devstack/settings | 4 +--- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/devstack/plugin.sh b/devstack/plugin.sh index e785d89c07..5764f773de 100755 --- a/devstack/plugin.sh +++ b/devstack/plugin.sh @@ -935,14 +935,27 @@ function download_image { } function import_docker_service_image_ubuntu { - GZIPPED_IMG_NAME=`basename "$MANILA_DOCKER_IMAGE_URL"` - IMG_NAME_LOAD=${GZIPPED_IMG_NAME%.*} - LOCAL_IMG_NAME=${IMG_NAME_LOAD%.*} - if [[ "$(sudo docker images -q $LOCAL_IMG_NAME)" == "" ]]; then - download_image $MANILA_DOCKER_IMAGE_URL - # Import image in Docker - gzip -d $FILES/$GZIPPED_IMG_NAME - sudo docker load --input $FILES/$IMG_NAME_LOAD + if [[ $MANILA_DOCKER_IMAGE_URL == *"/"*":"* ]] || [[ $MANILA_DOCKER_IMAGE_URL == *"/"*"/"* ]]; then + # Registry reference (e.g., quay.io/org/image:tag) + if [[ "$(sudo docker images -q $MANILA_DOCKER_IMAGE_URL)" == "" ]]; then + sudo docker pull "$MANILA_DOCKER_IMAGE_URL" + fi + sudo docker tag "$MANILA_DOCKER_IMAGE_URL" manila-docker-container + else + # Tarball URL (http/https/file) + GZIPPED_IMG_NAME=$(basename "$MANILA_DOCKER_IMAGE_URL") + IMG_NAME_LOAD=${GZIPPED_IMG_NAME%.*} + LOCAL_IMG_NAME=${IMG_NAME_LOAD%.*} + if [[ "$(sudo docker images -q $LOCAL_IMG_NAME)" == "" ]]; then + download_image $MANILA_DOCKER_IMAGE_URL + if [[ $MANILA_DOCKER_IMAGE_URL == file* ]]; then + local src_path + src_path=$(echo "$MANILA_DOCKER_IMAGE_URL" | sed "s|^file://||") + cp "$src_path" "$FILES/$GZIPPED_IMG_NAME" + fi + gzip -d "$FILES/$GZIPPED_IMG_NAME" + sudo docker load --input "$FILES/$IMG_NAME_LOAD" + fi fi } diff --git a/devstack/settings b/devstack/settings index 6a8e74a414..b7dbdb72fe 100644 --- a/devstack/settings +++ b/devstack/settings @@ -167,9 +167,7 @@ MANILA_ZFSONLINUX_REPLICATION_DOMAIN=${MANILA_ZFSONLINUX_REPLICATION_DOMAIN:-"ZF MANILA_CONTAINER_DRIVER=${MANILA_CONTAINER_DRIVER:-"manila.share.drivers.container.driver.ContainerShareDriver"} MANILA_DOCKER_IMAGE_ALIAS=${MANILA_DOCKER_IMAGE_ALIAS:-"manila_docker_image"} MANILA_CONTAINER_VOLUME_GROUP_NAME=${MANILA_CONTAINER_VOLUME_GROUP_NAME:-"manila_docker_volumes"} -# (aovchinnikov): This location is temporary and will be changed to a -# permanent one as soon as possible. -MANILA_DOCKER_IMAGE_URL=${MANILA_DOCKER_IMAGE_URL:-"https://github.com/a-ovchinnikov/manila-image-elements-lxd-images/releases/download/0.1.0/manila-docker-container.tar.gz"} +MANILA_DOCKER_IMAGE_URL=${MANILA_DOCKER_IMAGE_URL:-"quay.io/openstack-manila/manila-docker-container:latest"} # Network Plugin MANILA_NETWORK_API_CLASS=${MANILA_NETWORK_API_CLASS:-"manila.network.neutron.neutron_network_plugin.NeutronBindNetworkPlugin"}