openstack team mailing list archive
-
openstack team
-
Mailing list archive
-
Message #10631
Unable to download images using Glance+Keystone+Swift
This is probably a configuration bug or a general lack of understanding, but I can't seem to find the problem. I've installed the latest Essex release (on instances running in Diablo) to verify my upgrade tasks. However, I'm unable to get Glance to download images (which prevents running instances). I'm able to upload images into the backend Swift store. I can perform image listings, etc, however when I try to download an image, I receive a 404 error, file not found.
To verify, I've run the following curl commands directly on the glance api service. To wit:
1. First, obtain a token
curl -d '{"auth": {"tenantName": "admin", "passwordCredentials": {"username": "admin", "password": "admin"}}}' -H "Content-type: application/json" http://essex1:35357/v2.0/tokens | python -mjson.tool
and I receive the output (edited)
}
],
"token": {
"expires": "2012-04-27T15:30:45Z",
"id": "45d01460a0e04bff967eb954e7f4fee8",
"tenant": {
"description": "All administrative tasks are to be grouped underneath this tenancy. Users are not to be associated with this tenant unless they have been granted admin roles.",
"enabled": true,
"id": "1",
"name": "admin"
}
},
2. Next, do a listing as follows:
root@essex1:/etc/keystone# curl -v -H 'X-Auth-Token: 45d01460a0e04bff967eb954e7f4fee8' -H 'Content-type: application/json' http://essex3:9292/v1/images | python -mjson.tool
* About to connect() to essex3 port 9292 (#0)
* Trying 172.16.1.5... % Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0connected
> GET /v1/images HTTP/1.1
> User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
> Host: essex3:9292
> Accept: */*
> X-Auth-Token: 45d01460a0e04bff967eb954e7f4fee8
> Content-type: application/json
>
< HTTP/1.1 200 OK
< Content-Type: application/json; charset=UTF-8
< Content-Length: 577
< Date: Thu, 26 Apr 2012 15:34:27 GMT
<
{ [data not shown]
100 577 100 577 0 0 7753 0 --:--:-- --:--:-- --:--:-- 8485
* Connection #0 to host essex3 left intact
* Closing connection #0
{
"images": [
{
"checksum": "10047a119149e08fb206eea89832eee0",
"container_format": "ami",
"disk_format": "ami",
"id": "6720c572-12b7-4cc8-a8c5-95b92998671a",
"name": "tty-linux",
"size": 25165824
},
{
"checksum": "2d222d406f3ed30e03ed44123c33cba6",
"container_format": "ari",
"disk_format": "ari",
"id": "9fe687a4-ccf0-4b69-86b2-a785e04a49b1",
"name": "tty-linux-ramdisk",
"size": 5882349
},
{
"checksum": "3ed2965d3f8d877a3ee3e061fd648e9a",
"container_format": "aki",
"disk_format": "aki",
"id": "423b0ecc-5ca1-44d8-8e85-5a245ce620e2",
"name": "tty-linux-kernel",
"size": 4404752
}
]
}
3. I can even do a HEAD on a particular image. For example:
root@essex1:/etc/keystone# curl -v -I -H 'X-Auth-Token: 45d01460a0e04bff967eb954e7f4fee8' -H 'Content-type: application/json' http://essex3:9292/v1/images/6720c572-12b7-4cc8-a8c5-95b92998671a | python -mjson.tool
* About to connect() to essex3 port 9292 (#0)
* Trying 172.16.1.5... % Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0connected
> HEAD /v1/images/6720c572-12b7-4cc8-a8c5-95b92998671a HTTP/1.1
> User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
> Host: essex3:9292
> Accept: */*
> X-Auth-Token: 45d01460a0e04bff967eb954e7f4fee8
> Content-type: application/json
>
< HTTP/1.1 200 OK
< Content-Type: text/html; charset=UTF-8
< Content-Length: 0
< X-Image-Meta-Property-Ramdisk_id: 9fe687a4-ccf0-4b69-86b2-a785e04a49b1
< X-Image-Meta-Id: 6720c572-12b7-4cc8-a8c5-95b92998671a
< X-Image-Meta-Deleted: False
< X-Image-Meta-Container_format: ami
< X-Image-Meta-Checksum: 10047a119149e08fb206eea89832eee0
< X-Image-Meta-Protected: False
< X-Image-Meta-Min_disk: 0
< X-Image-Meta-Created_at: 2012-04-24T19:39:31
< X-Image-Meta-Size: 25165824
< X-Image-Meta-Status: active
< X-Image-Meta-Is_public: True
< X-Image-Meta-Min_ram: 0
< X-Image-Meta-Property-Kernel_id: 423b0ecc-5ca1-44d8-8e85-5a245ce620e2
< X-Image-Meta-Owner: 1
< X-Image-Meta-Updated_at: 2012-04-24T19:39:33
< X-Image-Meta-Disk_format: ami
< X-Image-Meta-Name: tty-linux
< Location: http://essex3:9292/v1/images/6720c572-12b7-4cc8-a8c5-95b92998671a
< Etag: 10047a119149e08fb206eea89832eee0
< Date: Thu, 26 Apr 2012 15:37:00 GMT
<
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
* Connection #0 to host essex3 left intact
* Closing connection #0
4. However, when I try to download the same image, I receive the following error:
curl -v -H 'X-Auth-Token: 45d01460a0e04bff967eb954e7f4fee8' -H 'Content-type: application/json' http://essex3:9292/v1/images/6720c572-12b7-4cc8-a8c5-95b92998671a | python -mjson.tool
* About to connect() to essex3 port 9292 (#0)
* Trying 172.16.1.5... % Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0connected
> GET /v1/images/6720c572-12b7-4cc8-a8c5-95b92998671a HTTP/1.1
> User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
> Host: essex3:9292
> Accept: */*
> X-Auth-Token: 45d01460a0e04bff967eb954e7f4fee8
> Content-type: application/json
>
< HTTP/1.1 404 Not Found
< Content-Length: 315
< Content-Type: text/html; charset=UTF-8
< Date: Thu, 26 Apr 2012 15:38:01 GMT
<
{ [data not shown]
100 315 100 315 0 0 4291 0 --:--:-- --:--:-- --:--:-- 5163
* Connection #0 to host essex3 left intact
* Closing connection #0
No JSON object could be decoded
I first noticed this when trying to instantiate and instance, and it was failing when trying to download the kernel image specified by the kernel_id property of the associated ami image.
Any clues? My glance-api.conf file is appended at the end of this message. Thanks for any insights that can be provided.
Regards,
Ross
--
glance-api.conf
--
[DEFAULT]
verbose = True
debug = True
default_store = swift
bind_host = 172.16.1.5
bind_port = 9292
log_file = /var/log/glance/api.log
backlog = 4096
workers = 0
admin_role = admin
use_syslog = False
registry_host = 0.0.0.0
registry_port = 9191
registry_client_protocol = http
rabbit_host = essex1
rabbit_port = 5672
rabbit_use_ssl = false
rabbit_userid = guest
rabbit_password = guest
rabbit_virtual_host = /
rabbit_notification_exchange = glance
rabbit_notification_topic = glance_notifications
# ============ Swift Store Options =============================
swift_store_auth_version = 2
swift_store_auth_address = http://essex1:5000/v2.0/
swift_store_user = service:glance
swift_store_key = glance
swift_store_container = glance
swift_store_create_container_on_put = True
swift_store_large_object_size = 5120
swift_store_large_object_chunk_size = 200
swift_enable_snet = False
delayed_delete = False
scrub_time = 43200
scrubber_datadir = /var/lib/glance/scrubber
image_cache_dir = /var/lib/glance/image-cache/
[paste_deploy]
flavor = keystone
Follow ups