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