From bc2ef929ed4529197b0418fc8234aaca56f84109 Mon Sep 17 00:00:00 2001 From: Mate Lakat Date: Thu, 15 Aug 2013 18:06:59 +0100 Subject: [PATCH] xenapi: devstack support for raw tgz image upload Devstack will recognise the .xen-raw.tgz extensions, and upload them to glance as raw tgz images with xen pv_mode. This change also adds "tgz" to the recognised container formats of glance. The changes for raw tgz support are: https://review.openstack.org/#/c/40908/ https://review.openstack.org/#/c/40909/ https://review.openstack.org/#/c/41651/ related to blueprint xenapi-supported-image-import-export Change-Id: I077564587d4303291bb4f10d62bb16380b574106 --- functions | 18 +++++++++++++++++- lib/glance | 4 ++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/functions b/functions index 41f008ed84..5ae2ee5cd3 100644 --- a/functions +++ b/functions @@ -1240,7 +1240,7 @@ function upload_image() { return fi - # XenServer-ovf-format images are provided as .vhd.tgz as well + # XenServer-vhd-ovf-format images are provided as .vhd.tgz # and should not be decompressed prior to loading if [[ "$image_url" =~ '.vhd.tgz' ]]; then IMAGE="$FILES/${IMAGE_FNAME}" @@ -1249,6 +1249,22 @@ function upload_image() { return fi + # .xen-raw.tgz suggests a Xen capable raw image inside a tgz. + # and should not be decompressed prior to loading. + # Setting metadata, so PV mode is used. + if [[ "$image_url" =~ '.xen-raw.tgz' ]]; then + IMAGE="$FILES/${IMAGE_FNAME}" + IMAGE_NAME="${IMAGE_FNAME%.xen-raw.tgz}" + glance \ + --os-auth-token $token \ + --os-image-url http://$GLANCE_HOSTPORT \ + image-create \ + --name "$IMAGE_NAME" --is-public=True \ + --container-format=tgz --disk-format=raw \ + --property vm_mode=xen < "${IMAGE}" + return + fi + KERNEL="" RAMDISK="" DISK_FORMAT="" diff --git a/lib/glance b/lib/glance index a18189f474..64d8b0695a 100644 --- a/lib/glance +++ b/lib/glance @@ -108,6 +108,10 @@ function configure_glance() { fi iniset_rpc_backend glance $GLANCE_API_CONF DEFAULT iniset $GLANCE_API_CONF keystone_authtoken signing_dir $GLANCE_AUTH_CACHE_DIR/api + if [ "$VIRT_DRIVER" = 'xenserver' ]; then + iniset $GLANCE_API_CONF DEFAULT container_formats "ami,ari,aki,bare,ovf,tgz" + iniset $GLANCE_API_CONF DEFAULT disk_formats "ami,ari,aki,vhd,raw,iso" + fi # Store the images in swift if enabled. if is_service_enabled s-proxy; then