upload_image.sh doesn't handle correctly file URLs: a file URL works only
if the file is already in the cache.
This patch provides support for file URLs of local files (RFC 1738)
http://tools.ietf.org/html/rfc1738
Change-Id: I107299c543cfa189e32848c32eefdbeb51a5e1f5
Closes-Bug: #1251752
| ... | ... |
@@ -1337,11 +1337,24 @@ function upload_image() {
|
| 1337 | 1337 |
# Create a directory for the downloaded image tarballs. |
| 1338 | 1338 |
mkdir -p $FILES/images |
| 1339 | 1339 |
|
| 1340 |
- # Downloads the image (uec ami+aki style), then extracts it. |
|
| 1341 |
- IMAGE_FNAME=`basename "$image_url"` |
|
| 1342 |
- if [[ ! -f $FILES/$IMAGE_FNAME || "$(stat -c "%s" $FILES/$IMAGE_FNAME)" = "0" ]]; then |
|
| 1343 |
- wget -c $image_url -O $FILES/$IMAGE_FNAME |
|
| 1344 |
- if [[ $? -ne 0 ]]; then |
|
| 1340 |
+ if [[ $image_url != file* ]]; then |
|
| 1341 |
+ # Downloads the image (uec ami+aki style), then extracts it. |
|
| 1342 |
+ IMAGE_FNAME=`basename "$image_url"` |
|
| 1343 |
+ if [[ ! -f $FILES/$IMAGE_FNAME || "$(stat -c "%s" $FILES/$IMAGE_FNAME)" = "0" ]]; then |
|
| 1344 |
+ wget -c $image_url -O $FILES/$IMAGE_FNAME |
|
| 1345 |
+ if [[ $? -ne 0 ]]; then |
|
| 1346 |
+ echo "Not found: $image_url" |
|
| 1347 |
+ return |
|
| 1348 |
+ fi |
|
| 1349 |
+ fi |
|
| 1350 |
+ IMAGE="$FILES/${IMAGE_FNAME}"
|
|
| 1351 |
+ else |
|
| 1352 |
+ # File based URL (RFC 1738): file://host/path |
|
| 1353 |
+ # Remote files are not considered here. |
|
| 1354 |
+ # *nix: file:///home/user/path/file |
|
| 1355 |
+ # windows: file:///C:/Documents%20and%20Settings/user/path/file |
|
| 1356 |
+ IMAGE=$(echo $image_url | sed "s/^file:\/\///g") |
|
| 1357 |
+ if [[ ! -f $IMAGE || "$(stat -c "%s" $IMAGE)" == "0" ]]; then |
|
| 1345 | 1358 |
echo "Not found: $image_url" |
| 1346 | 1359 |
return |
| 1347 | 1360 |
fi |
| ... | ... |
@@ -1349,7 +1362,6 @@ function upload_image() {
|
| 1349 | 1349 |
|
| 1350 | 1350 |
# OpenVZ-format images are provided as .tar.gz, but not decompressed prior to loading |
| 1351 | 1351 |
if [[ "$image_url" =~ 'openvz' ]]; then |
| 1352 |
- IMAGE="$FILES/${IMAGE_FNAME}"
|
|
| 1353 | 1352 |
IMAGE_NAME="${IMAGE_FNAME%.tar.gz}"
|
| 1354 | 1353 |
glance --os-auth-token $token --os-image-url http://$GLANCE_HOSTPORT image-create --name "$IMAGE_NAME" --is-public=True --container-format ami --disk-format ami < "${IMAGE}"
|
| 1355 | 1354 |
return |
| ... | ... |
@@ -1357,7 +1369,6 @@ function upload_image() {
|
| 1357 | 1357 |
|
| 1358 | 1358 |
# vmdk format images |
| 1359 | 1359 |
if [[ "$image_url" =~ '.vmdk' ]]; then |
| 1360 |
- IMAGE="$FILES/${IMAGE_FNAME}"
|
|
| 1361 | 1360 |
IMAGE_NAME="${IMAGE_FNAME%.vmdk}"
|
| 1362 | 1361 |
|
| 1363 | 1362 |
# Before we can upload vmdk type images to glance, we need to know it's |
| ... | ... |
@@ -1408,7 +1419,6 @@ function upload_image() {
|
| 1408 | 1408 |
# XenServer-vhd-ovf-format images are provided as .vhd.tgz |
| 1409 | 1409 |
# and should not be decompressed prior to loading |
| 1410 | 1410 |
if [[ "$image_url" =~ '.vhd.tgz' ]]; then |
| 1411 |
- IMAGE="$FILES/${IMAGE_FNAME}"
|
|
| 1412 | 1411 |
IMAGE_NAME="${IMAGE_FNAME%.vhd.tgz}"
|
| 1413 | 1412 |
glance --os-auth-token $token --os-image-url http://$GLANCE_HOSTPORT image-create --name "$IMAGE_NAME" --is-public=True --container-format=ovf --disk-format=vhd < "${IMAGE}"
|
| 1414 | 1413 |
return |
| ... | ... |
@@ -1418,7 +1428,6 @@ function upload_image() {
|
| 1418 | 1418 |
# and should not be decompressed prior to loading. |
| 1419 | 1419 |
# Setting metadata, so PV mode is used. |
| 1420 | 1420 |
if [[ "$image_url" =~ '.xen-raw.tgz' ]]; then |
| 1421 |
- IMAGE="$FILES/${IMAGE_FNAME}"
|
|
| 1422 | 1421 |
IMAGE_NAME="${IMAGE_FNAME%.xen-raw.tgz}"
|
| 1423 | 1422 |
glance \ |
| 1424 | 1423 |
--os-auth-token $token \ |
| ... | ... |
@@ -1456,7 +1465,6 @@ function upload_image() {
|
| 1456 | 1456 |
fi |
| 1457 | 1457 |
;; |
| 1458 | 1458 |
*.img) |
| 1459 |
- IMAGE="$FILES/$IMAGE_FNAME"; |
|
| 1460 | 1459 |
IMAGE_NAME=$(basename "$IMAGE" ".img") |
| 1461 | 1460 |
format=$(qemu-img info ${IMAGE} | awk '/^file format/ { print $3; exit }')
|
| 1462 | 1461 |
if [[ ",qcow2,raw,vdi,vmdk,vpc," =~ ",$format," ]]; then |
| ... | ... |
@@ -1467,20 +1475,17 @@ function upload_image() {
|
| 1467 | 1467 |
CONTAINER_FORMAT=bare |
| 1468 | 1468 |
;; |
| 1469 | 1469 |
*.img.gz) |
| 1470 |
- IMAGE="$FILES/${IMAGE_FNAME}"
|
|
| 1471 | 1470 |
IMAGE_NAME=$(basename "$IMAGE" ".img.gz") |
| 1472 | 1471 |
DISK_FORMAT=raw |
| 1473 | 1472 |
CONTAINER_FORMAT=bare |
| 1474 | 1473 |
UNPACK=zcat |
| 1475 | 1474 |
;; |
| 1476 | 1475 |
*.qcow2) |
| 1477 |
- IMAGE="$FILES/${IMAGE_FNAME}"
|
|
| 1478 | 1476 |
IMAGE_NAME=$(basename "$IMAGE" ".qcow2") |
| 1479 | 1477 |
DISK_FORMAT=qcow2 |
| 1480 | 1478 |
CONTAINER_FORMAT=bare |
| 1481 | 1479 |
;; |
| 1482 | 1480 |
*.iso) |
| 1483 |
- IMAGE="$FILES/${IMAGE_FNAME}"
|
|
| 1484 | 1481 |
IMAGE_NAME=$(basename "$IMAGE" ".iso") |
| 1485 | 1482 |
DISK_FORMAT=iso |
| 1486 | 1483 |
CONTAINER_FORMAT=bare |