119 lines
3.4 KiB
Python
119 lines
3.4 KiB
Python
# Copyright 2013 Rackspace Hosting
|
|
# All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
from oslo_serialization import jsonutils
|
|
|
|
from nova import test
|
|
from nova.tests.unit.api.openstack import fakes
|
|
|
|
NOW_API_FORMAT = "2010-10-11T10:30:22Z"
|
|
IMAGES = [{
|
|
'id': '123',
|
|
'name': 'public image',
|
|
'metadata': {'key1': 'value1'},
|
|
'updated': NOW_API_FORMAT,
|
|
'created': NOW_API_FORMAT,
|
|
'status': 'ACTIVE',
|
|
'progress': 100,
|
|
'minDisk': 10,
|
|
'minRam': 128,
|
|
'size': 12345678,
|
|
"links": [{
|
|
"rel": "self",
|
|
"href": "http://localhost/v2/fake/images/123",
|
|
},
|
|
{
|
|
"rel": "bookmark",
|
|
"href": "http://localhost/fake/images/123",
|
|
}],
|
|
},
|
|
{
|
|
'id': '124',
|
|
'name': 'queued snapshot',
|
|
'updated': NOW_API_FORMAT,
|
|
'created': NOW_API_FORMAT,
|
|
'status': 'SAVING',
|
|
'progress': 25,
|
|
'minDisk': 0,
|
|
'minRam': 0,
|
|
'size': 87654321,
|
|
"links": [{
|
|
"rel": "self",
|
|
"href": "http://localhost/v2/fake/images/124",
|
|
},
|
|
{
|
|
"rel": "bookmark",
|
|
"href": "http://localhost/fake/images/124",
|
|
}],
|
|
}]
|
|
|
|
|
|
def fake_show(*args, **kwargs):
|
|
return IMAGES[0]
|
|
|
|
|
|
def fake_detail(*args, **kwargs):
|
|
return IMAGES
|
|
|
|
|
|
class ImageSizeTestV21(test.NoDBTestCase):
|
|
content_type = 'application/json'
|
|
prefix = 'OS-EXT-IMG-SIZE'
|
|
|
|
def setUp(self):
|
|
super(ImageSizeTestV21, self).setUp()
|
|
|
|
self.stub_out('nova.image.glance.GlanceImageServiceV2.show',
|
|
fake_show)
|
|
self.stub_out('nova.image.glance.GlanceImageServiceV2.detail',
|
|
fake_detail)
|
|
|
|
self.flags(api_servers=['http://localhost:9292'], group='glance')
|
|
|
|
def _make_request(self, url):
|
|
req = fakes.HTTPRequest.blank(url)
|
|
req.headers['Accept'] = self.content_type
|
|
res = req.get_response(self._get_app())
|
|
return res
|
|
|
|
def _get_app(self):
|
|
return fakes.wsgi_app_v21()
|
|
|
|
def _get_image(self, body):
|
|
return jsonutils.loads(body).get('image')
|
|
|
|
def _get_images(self, body):
|
|
return jsonutils.loads(body).get('images')
|
|
|
|
def assertImageSize(self, image, size):
|
|
self.assertEqual(size, image.get('%s:size' % self.prefix))
|
|
|
|
def test_show(self):
|
|
url = '/v2/fake/images/1'
|
|
res = self._make_request(url)
|
|
|
|
self.assertEqual(200, res.status_int)
|
|
image = self._get_image(res.body)
|
|
self.assertImageSize(image, 12345678)
|
|
|
|
def test_detail(self):
|
|
url = '/v2/fake/images/detail'
|
|
res = self._make_request(url)
|
|
|
|
self.assertEqual(200, res.status_int)
|
|
images = self._get_images(res.body)
|
|
self.assertImageSize(images[0], 12345678)
|
|
self.assertImageSize(images[1], 87654321)
|