|
|
@@ -400,17 +400,17 @@ class ImageManagerTest(testtools.TestCase):
|
|
|
|
('GET', '/v1/images/detail?limit=2', {}, None),
|
|
|
|
('GET', '/v1/images/detail?limit=2', {}, None),
|
|
|
|
('GET', '/v1/images/detail?marker=b&limit=2', {}, None),
|
|
|
|
('GET', '/v1/images/detail?marker=b&limit=2', {}, None),
|
|
|
|
]
|
|
|
|
]
|
|
|
|
self.assertEqual(self.api.calls, expect)
|
|
|
|
self.assertEqual(expect, self.api.calls)
|
|
|
|
self.assertEqual(len(images), 3)
|
|
|
|
self.assertEqual(3, len(images))
|
|
|
|
self.assertEqual(images[0].id, 'a')
|
|
|
|
self.assertEqual('a', images[0].id)
|
|
|
|
self.assertEqual(images[1].id, 'b')
|
|
|
|
self.assertEqual('b', images[1].id)
|
|
|
|
self.assertEqual(images[2].id, 'c')
|
|
|
|
self.assertEqual('c', images[2].id)
|
|
|
|
|
|
|
|
|
|
|
|
def test_list_with_limit_less_than_page_size(self):
|
|
|
|
def test_list_with_limit_less_than_page_size(self):
|
|
|
|
results = list(self.mgr.list(page_size=2, limit=1))
|
|
|
|
results = list(self.mgr.list(page_size=2, limit=1))
|
|
|
|
expect = [('GET', '/v1/images/detail?limit=2', {}, None)]
|
|
|
|
expect = [('GET', '/v1/images/detail?limit=2', {}, None)]
|
|
|
|
self.assertEqual(1, len(results))
|
|
|
|
self.assertEqual(1, len(results))
|
|
|
|
self.assertEqual(self.api.calls, expect)
|
|
|
|
self.assertEqual(expect, self.api.calls)
|
|
|
|
|
|
|
|
|
|
|
|
def test_list_with_limit_greater_than_page_size(self):
|
|
|
|
def test_list_with_limit_greater_than_page_size(self):
|
|
|
|
images = list(self.mgr.list(page_size=1, limit=2))
|
|
|
|
images = list(self.mgr.list(page_size=1, limit=2))
|
|
|
@@ -418,88 +418,88 @@ class ImageManagerTest(testtools.TestCase):
|
|
|
|
('GET', '/v1/images/detail?limit=1', {}, None),
|
|
|
|
('GET', '/v1/images/detail?limit=1', {}, None),
|
|
|
|
('GET', '/v1/images/detail?marker=a&limit=1', {}, None),
|
|
|
|
('GET', '/v1/images/detail?marker=a&limit=1', {}, None),
|
|
|
|
]
|
|
|
|
]
|
|
|
|
self.assertEqual(len(images), 2)
|
|
|
|
self.assertEqual(2, len(images))
|
|
|
|
self.assertEqual(images[0].id, 'a')
|
|
|
|
self.assertEqual('a', images[0].id)
|
|
|
|
self.assertEqual(images[1].id, 'b')
|
|
|
|
self.assertEqual('b', images[1].id)
|
|
|
|
self.assertEqual(self.api.calls, expect)
|
|
|
|
self.assertEqual(expect, self.api.calls)
|
|
|
|
|
|
|
|
|
|
|
|
def test_list_with_marker(self):
|
|
|
|
def test_list_with_marker(self):
|
|
|
|
list(self.mgr.list(marker='a'))
|
|
|
|
list(self.mgr.list(marker='a'))
|
|
|
|
url = '/v1/images/detail?marker=a&limit=20'
|
|
|
|
url = '/v1/images/detail?marker=a&limit=20'
|
|
|
|
expect = [('GET', url, {}, None)]
|
|
|
|
expect = [('GET', url, {}, None)]
|
|
|
|
self.assertEqual(self.api.calls, expect)
|
|
|
|
self.assertEqual(expect, self.api.calls)
|
|
|
|
|
|
|
|
|
|
|
|
def test_list_with_filter(self):
|
|
|
|
def test_list_with_filter(self):
|
|
|
|
list(self.mgr.list(filters={'name': "foo"}))
|
|
|
|
list(self.mgr.list(filters={'name': "foo"}))
|
|
|
|
url = '/v1/images/detail?limit=20&name=foo'
|
|
|
|
url = '/v1/images/detail?limit=20&name=foo'
|
|
|
|
expect = [('GET', url, {}, None)]
|
|
|
|
expect = [('GET', url, {}, None)]
|
|
|
|
self.assertEqual(self.api.calls, expect)
|
|
|
|
self.assertEqual(expect, self.api.calls)
|
|
|
|
|
|
|
|
|
|
|
|
def test_list_with_property_filters(self):
|
|
|
|
def test_list_with_property_filters(self):
|
|
|
|
list(self.mgr.list(filters={'properties': {'ping': 'pong'}}))
|
|
|
|
list(self.mgr.list(filters={'properties': {'ping': 'pong'}}))
|
|
|
|
url = '/v1/images/detail?property-ping=pong&limit=20'
|
|
|
|
url = '/v1/images/detail?property-ping=pong&limit=20'
|
|
|
|
expect = [('GET', url, {}, None)]
|
|
|
|
expect = [('GET', url, {}, None)]
|
|
|
|
self.assertEqual(self.api.calls, expect)
|
|
|
|
self.assertEqual(expect, self.api.calls)
|
|
|
|
|
|
|
|
|
|
|
|
def test_list_with_sort_dir(self):
|
|
|
|
def test_list_with_sort_dir(self):
|
|
|
|
list(self.mgr.list(sort_dir='desc'))
|
|
|
|
list(self.mgr.list(sort_dir='desc'))
|
|
|
|
url = '/v1/images/detail?sort_dir=desc&limit=20'
|
|
|
|
url = '/v1/images/detail?sort_dir=desc&limit=20'
|
|
|
|
expect = [('GET', url, {}, None)]
|
|
|
|
expect = [('GET', url, {}, None)]
|
|
|
|
self.assertEqual(self.api.calls, expect)
|
|
|
|
self.assertEqual(expect, self.api.calls)
|
|
|
|
|
|
|
|
|
|
|
|
def test_list_with_sort_key(self):
|
|
|
|
def test_list_with_sort_key(self):
|
|
|
|
list(self.mgr.list(sort_key='name'))
|
|
|
|
list(self.mgr.list(sort_key='name'))
|
|
|
|
url = '/v1/images/detail?sort_key=name&limit=20'
|
|
|
|
url = '/v1/images/detail?sort_key=name&limit=20'
|
|
|
|
expect = [('GET', url, {}, None)]
|
|
|
|
expect = [('GET', url, {}, None)]
|
|
|
|
self.assertEqual(self.api.calls, expect)
|
|
|
|
self.assertEqual(expect, self.api.calls)
|
|
|
|
|
|
|
|
|
|
|
|
def test_get(self):
|
|
|
|
def test_get(self):
|
|
|
|
image = self.mgr.get('1')
|
|
|
|
image = self.mgr.get('1')
|
|
|
|
expect = [('HEAD', '/v1/images/1', {}, None)]
|
|
|
|
expect = [('HEAD', '/v1/images/1', {}, None)]
|
|
|
|
self.assertEqual(self.api.calls, expect)
|
|
|
|
self.assertEqual(expect, self.api.calls)
|
|
|
|
self.assertEqual(image.id, '1')
|
|
|
|
self.assertEqual('1', image.id)
|
|
|
|
self.assertEqual(image.name, 'image-1')
|
|
|
|
self.assertEqual('image-1', image.name)
|
|
|
|
self.assertEqual(image.is_public, False)
|
|
|
|
self.assertEqual(False, image.is_public)
|
|
|
|
self.assertEqual(image.protected, False)
|
|
|
|
self.assertEqual(False, image.protected)
|
|
|
|
self.assertEqual(image.deleted, False)
|
|
|
|
self.assertEqual(False, image.deleted)
|
|
|
|
self.assertEqual(image.properties, {u'arch': u'x86_64'})
|
|
|
|
self.assertEqual({u'arch': u'x86_64'}, image.properties)
|
|
|
|
|
|
|
|
|
|
|
|
def test_get_int(self):
|
|
|
|
def test_get_int(self):
|
|
|
|
image = self.mgr.get(1)
|
|
|
|
image = self.mgr.get(1)
|
|
|
|
expect = [('HEAD', '/v1/images/1', {}, None)]
|
|
|
|
expect = [('HEAD', '/v1/images/1', {}, None)]
|
|
|
|
self.assertEqual(self.api.calls, expect)
|
|
|
|
self.assertEqual(expect, self.api.calls)
|
|
|
|
self.assertEqual(image.id, '1')
|
|
|
|
self.assertEqual('1', image.id)
|
|
|
|
self.assertEqual(image.name, 'image-1')
|
|
|
|
self.assertEqual('image-1', image.name)
|
|
|
|
self.assertEqual(image.is_public, False)
|
|
|
|
self.assertEqual(False, image.is_public)
|
|
|
|
self.assertEqual(image.protected, False)
|
|
|
|
self.assertEqual(False, image.protected)
|
|
|
|
self.assertEqual(image.deleted, False)
|
|
|
|
self.assertEqual(False, image.deleted)
|
|
|
|
self.assertEqual(image.properties, {u'arch': u'x86_64'})
|
|
|
|
self.assertEqual({u'arch': u'x86_64'}, image.properties)
|
|
|
|
|
|
|
|
|
|
|
|
def test_get_encoding(self):
|
|
|
|
def test_get_encoding(self):
|
|
|
|
image = self.mgr.get('3')
|
|
|
|
image = self.mgr.get('3')
|
|
|
|
expect = [('HEAD', '/v1/images/3', {}, None)]
|
|
|
|
expect = [('HEAD', '/v1/images/3', {}, None)]
|
|
|
|
self.assertEqual(image.name, u"ni\xf1o")
|
|
|
|
self.assertEqual(u"ni\xf1o", image.name)
|
|
|
|
|
|
|
|
|
|
|
|
def test_data(self):
|
|
|
|
def test_data(self):
|
|
|
|
data = ''.join([b for b in self.mgr.data('1', do_checksum=False)])
|
|
|
|
data = ''.join([b for b in self.mgr.data('1', do_checksum=False)])
|
|
|
|
expect = [('GET', '/v1/images/1', {}, None)]
|
|
|
|
expect = [('GET', '/v1/images/1', {}, None)]
|
|
|
|
self.assertEqual(self.api.calls, expect)
|
|
|
|
self.assertEqual(expect, self.api.calls)
|
|
|
|
self.assertEqual(data, 'XXX')
|
|
|
|
self.assertEqual('XXX', data)
|
|
|
|
|
|
|
|
|
|
|
|
expect += [('GET', '/v1/images/1', {}, None)]
|
|
|
|
expect += [('GET', '/v1/images/1', {}, None)]
|
|
|
|
data = ''.join([b for b in self.mgr.data('1')])
|
|
|
|
data = ''.join([b for b in self.mgr.data('1')])
|
|
|
|
self.assertEqual(self.api.calls, expect)
|
|
|
|
self.assertEqual(expect, self.api.calls)
|
|
|
|
self.assertEqual(data, 'XXX')
|
|
|
|
self.assertEqual('XXX', data)
|
|
|
|
|
|
|
|
|
|
|
|
def test_data_with_wrong_checksum(self):
|
|
|
|
def test_data_with_wrong_checksum(self):
|
|
|
|
data = ''.join([b for b in self.mgr.data('2', do_checksum=False)])
|
|
|
|
data = ''.join([b for b in self.mgr.data('2', do_checksum=False)])
|
|
|
|
expect = [('GET', '/v1/images/2', {}, None)]
|
|
|
|
expect = [('GET', '/v1/images/2', {}, None)]
|
|
|
|
self.assertEqual(self.api.calls, expect)
|
|
|
|
self.assertEqual(expect, self.api.calls)
|
|
|
|
self.assertEqual(data, 'YYY')
|
|
|
|
self.assertEqual('YYY', data)
|
|
|
|
|
|
|
|
|
|
|
|
expect += [('GET', '/v1/images/2', {}, None)]
|
|
|
|
expect += [('GET', '/v1/images/2', {}, None)]
|
|
|
|
data = self.mgr.data('2')
|
|
|
|
data = self.mgr.data('2')
|
|
|
|
self.assertEqual(self.api.calls, expect)
|
|
|
|
self.assertEqual(expect, self.api.calls)
|
|
|
|
try:
|
|
|
|
try:
|
|
|
|
data = ''.join([b for b in data])
|
|
|
|
data = ''.join([b for b in data])
|
|
|
|
self.fail('data did not raise an error.')
|
|
|
|
self.fail('data did not raise an error.')
|
|
|
@@ -511,18 +511,18 @@ class ImageManagerTest(testtools.TestCase):
|
|
|
|
def test_data_with_checksum(self):
|
|
|
|
def test_data_with_checksum(self):
|
|
|
|
data = ''.join([b for b in self.mgr.data('3', do_checksum=False)])
|
|
|
|
data = ''.join([b for b in self.mgr.data('3', do_checksum=False)])
|
|
|
|
expect = [('GET', '/v1/images/3', {}, None)]
|
|
|
|
expect = [('GET', '/v1/images/3', {}, None)]
|
|
|
|
self.assertEqual(self.api.calls, expect)
|
|
|
|
self.assertEqual(expect, self.api.calls)
|
|
|
|
self.assertEqual(data, 'ZZZ')
|
|
|
|
self.assertEqual('ZZZ', data)
|
|
|
|
|
|
|
|
|
|
|
|
expect += [('GET', '/v1/images/3', {}, None)]
|
|
|
|
expect += [('GET', '/v1/images/3', {}, None)]
|
|
|
|
data = ''.join([b for b in self.mgr.data('3')])
|
|
|
|
data = ''.join([b for b in self.mgr.data('3')])
|
|
|
|
self.assertEqual(self.api.calls, expect)
|
|
|
|
self.assertEqual(expect, self.api.calls)
|
|
|
|
self.assertEqual(data, 'ZZZ')
|
|
|
|
self.assertEqual('ZZZ', data)
|
|
|
|
|
|
|
|
|
|
|
|
def test_delete(self):
|
|
|
|
def test_delete(self):
|
|
|
|
self.mgr.delete('1')
|
|
|
|
self.mgr.delete('1')
|
|
|
|
expect = [('DELETE', '/v1/images/1', {}, None)]
|
|
|
|
expect = [('DELETE', '/v1/images/1', {}, None)]
|
|
|
|
self.assertEqual(self.api.calls, expect)
|
|
|
|
self.assertEqual(expect, self.api.calls)
|
|
|
|
|
|
|
|
|
|
|
|
def test_create_without_data(self):
|
|
|
|
def test_create_without_data(self):
|
|
|
|
params = {
|
|
|
|
params = {
|
|
|
@@ -552,26 +552,26 @@ class ImageManagerTest(testtools.TestCase):
|
|
|
|
'x-image-meta-property-c': 'd',
|
|
|
|
'x-image-meta-property-c': 'd',
|
|
|
|
}
|
|
|
|
}
|
|
|
|
expect = [('POST', '/v1/images', expect_headers, None)]
|
|
|
|
expect = [('POST', '/v1/images', expect_headers, None)]
|
|
|
|
self.assertEqual(self.api.calls, expect)
|
|
|
|
self.assertEqual(expect, self.api.calls)
|
|
|
|
self.assertEqual(image.id, '1')
|
|
|
|
self.assertEqual('1', image.id)
|
|
|
|
self.assertEqual(image.name, 'image-1')
|
|
|
|
self.assertEqual('image-1', image.name)
|
|
|
|
self.assertEqual(image.container_format, 'ovf')
|
|
|
|
self.assertEqual('ovf', image.container_format)
|
|
|
|
self.assertEqual(image.disk_format, 'vhd')
|
|
|
|
self.assertEqual('vhd', image.disk_format)
|
|
|
|
self.assertEqual(image.owner, 'asdf')
|
|
|
|
self.assertEqual('asdf', image.owner)
|
|
|
|
self.assertEqual(image.size, 1024)
|
|
|
|
self.assertEqual(1024, image.size)
|
|
|
|
self.assertEqual(image.min_ram, 512)
|
|
|
|
self.assertEqual(512, image.min_ram)
|
|
|
|
self.assertEqual(image.min_disk, 10)
|
|
|
|
self.assertEqual(10, image.min_disk)
|
|
|
|
self.assertEqual(image.is_public, False)
|
|
|
|
self.assertEqual(False, image.is_public)
|
|
|
|
self.assertEqual(image.protected, False)
|
|
|
|
self.assertEqual(False, image.protected)
|
|
|
|
self.assertEqual(image.deleted, False)
|
|
|
|
self.assertEqual(False, image.deleted)
|
|
|
|
self.assertEqual(image.properties, {'a': 'b', 'c': 'd'})
|
|
|
|
self.assertEqual({'a': 'b', 'c': 'd'}, image.properties)
|
|
|
|
|
|
|
|
|
|
|
|
def test_create_with_data(self):
|
|
|
|
def test_create_with_data(self):
|
|
|
|
image_data = six.StringIO('XXX')
|
|
|
|
image_data = six.StringIO('XXX')
|
|
|
|
self.mgr.create(data=image_data)
|
|
|
|
self.mgr.create(data=image_data)
|
|
|
|
expect_headers = {'x-image-meta-size': '3'}
|
|
|
|
expect_headers = {'x-image-meta-size': '3'}
|
|
|
|
expect = [('POST', '/v1/images', expect_headers, image_data)]
|
|
|
|
expect = [('POST', '/v1/images', expect_headers, image_data)]
|
|
|
|
self.assertEqual(self.api.calls, expect)
|
|
|
|
self.assertEqual(expect, self.api.calls)
|
|
|
|
|
|
|
|
|
|
|
|
def test_update(self):
|
|
|
|
def test_update(self):
|
|
|
|
fields = {
|
|
|
|
fields = {
|
|
|
@@ -601,81 +601,81 @@ class ImageManagerTest(testtools.TestCase):
|
|
|
|
'x-image-meta-deleted': 'False',
|
|
|
|
'x-image-meta-deleted': 'False',
|
|
|
|
}
|
|
|
|
}
|
|
|
|
expect = [('PUT', '/v1/images/1', expect_hdrs, None)]
|
|
|
|
expect = [('PUT', '/v1/images/1', expect_hdrs, None)]
|
|
|
|
self.assertEqual(self.api.calls, expect)
|
|
|
|
self.assertEqual(expect, self.api.calls)
|
|
|
|
self.assertEqual(image.id, '1')
|
|
|
|
self.assertEqual('1', image.id)
|
|
|
|
self.assertEqual(image.name, 'image-2')
|
|
|
|
self.assertEqual('image-2', image.name)
|
|
|
|
self.assertEqual(image.size, 1024)
|
|
|
|
self.assertEqual(1024, image.size)
|
|
|
|
self.assertEqual(image.min_ram, 512)
|
|
|
|
self.assertEqual(512, image.min_ram)
|
|
|
|
self.assertEqual(image.min_disk, 10)
|
|
|
|
self.assertEqual(10, image.min_disk)
|
|
|
|
|
|
|
|
|
|
|
|
def test_update_with_data(self):
|
|
|
|
def test_update_with_data(self):
|
|
|
|
image_data = six.StringIO('XXX')
|
|
|
|
image_data = six.StringIO('XXX')
|
|
|
|
self.mgr.update('1', data=image_data)
|
|
|
|
self.mgr.update('1', data=image_data)
|
|
|
|
expect_headers = {'x-image-meta-size': '3'}
|
|
|
|
expect_headers = {'x-image-meta-size': '3'}
|
|
|
|
expect = [('PUT', '/v1/images/1', expect_headers, image_data)]
|
|
|
|
expect = [('PUT', '/v1/images/1', expect_headers, image_data)]
|
|
|
|
self.assertEqual(self.api.calls, expect)
|
|
|
|
self.assertEqual(expect, self.api.calls)
|
|
|
|
|
|
|
|
|
|
|
|
def test_update_with_purge_props(self):
|
|
|
|
def test_update_with_purge_props(self):
|
|
|
|
self.mgr.update('1', purge_props=True)
|
|
|
|
self.mgr.update('1', purge_props=True)
|
|
|
|
expect_headers = {'x-glance-registry-purge-props': 'true'}
|
|
|
|
expect_headers = {'x-glance-registry-purge-props': 'true'}
|
|
|
|
expect = [('PUT', '/v1/images/1', expect_headers, None)]
|
|
|
|
expect = [('PUT', '/v1/images/1', expect_headers, None)]
|
|
|
|
self.assertEqual(self.api.calls, expect)
|
|
|
|
self.assertEqual(expect, self.api.calls)
|
|
|
|
|
|
|
|
|
|
|
|
def test_image_meta_from_headers_encoding(self):
|
|
|
|
def test_image_meta_from_headers_encoding(self):
|
|
|
|
fields = {"x-image-meta-name": "ni\xc3\xb1o"}
|
|
|
|
fields = {"x-image-meta-name": "ni\xc3\xb1o"}
|
|
|
|
headers = self.mgr._image_meta_from_headers(fields)
|
|
|
|
headers = self.mgr._image_meta_from_headers(fields)
|
|
|
|
self.assertEqual(headers["name"], u"ni\xf1o")
|
|
|
|
self.assertEqual(u"ni\xf1o", headers["name"])
|
|
|
|
|
|
|
|
|
|
|
|
def test_image_list_with_owner(self):
|
|
|
|
def test_image_list_with_owner(self):
|
|
|
|
images = self.mgr.list(owner='A', page_size=20)
|
|
|
|
images = self.mgr.list(owner='A', page_size=20)
|
|
|
|
image_list = list(images)
|
|
|
|
image_list = list(images)
|
|
|
|
self.assertEqual(image_list[0].owner, 'A')
|
|
|
|
self.assertEqual('A', image_list[0].owner)
|
|
|
|
self.assertEqual(image_list[0].id, 'a')
|
|
|
|
self.assertEqual('a', image_list[0].id)
|
|
|
|
self.assertEqual(len(image_list), 1)
|
|
|
|
self.assertEqual(1, len(image_list))
|
|
|
|
|
|
|
|
|
|
|
|
def test_image_list_with_notfound_owner(self):
|
|
|
|
def test_image_list_with_notfound_owner(self):
|
|
|
|
images = self.mgr.list(owner='X', page_size=20)
|
|
|
|
images = self.mgr.list(owner='X', page_size=20)
|
|
|
|
self.assertEqual(len(list(images)), 0)
|
|
|
|
self.assertEqual(0, len(list(images)))
|
|
|
|
|
|
|
|
|
|
|
|
def test_image_list_with_empty_string_owner(self):
|
|
|
|
def test_image_list_with_empty_string_owner(self):
|
|
|
|
images = self.mgr.list(owner='', page_size=20)
|
|
|
|
images = self.mgr.list(owner='', page_size=20)
|
|
|
|
image_list = list(images)
|
|
|
|
image_list = list(images)
|
|
|
|
self.assertRaises(AttributeError, lambda: image_list[0].owner)
|
|
|
|
self.assertRaises(AttributeError, lambda: image_list[0].owner)
|
|
|
|
self.assertEqual(image_list[0].id, 'c')
|
|
|
|
self.assertEqual('c', image_list[0].id)
|
|
|
|
self.assertEqual(len(image_list), 1)
|
|
|
|
self.assertEqual(1, len(image_list))
|
|
|
|
|
|
|
|
|
|
|
|
def test_image_list_with_unspecified_owner(self):
|
|
|
|
def test_image_list_with_unspecified_owner(self):
|
|
|
|
images = self.mgr.list(owner=None, page_size=5)
|
|
|
|
images = self.mgr.list(owner=None, page_size=5)
|
|
|
|
image_list = list(images)
|
|
|
|
image_list = list(images)
|
|
|
|
self.assertEqual(image_list[0].owner, 'A')
|
|
|
|
self.assertEqual('A', image_list[0].owner)
|
|
|
|
self.assertEqual(image_list[0].id, 'a')
|
|
|
|
self.assertEqual('a', image_list[0].id)
|
|
|
|
self.assertEqual(image_list[1].owner, 'A')
|
|
|
|
self.assertEqual('A', image_list[1].owner)
|
|
|
|
self.assertEqual(image_list[1].id, 'b')
|
|
|
|
self.assertEqual('b', image_list[1].id)
|
|
|
|
self.assertEqual(image_list[2].owner, 'B')
|
|
|
|
self.assertEqual('B', image_list[2].owner)
|
|
|
|
self.assertEqual(image_list[2].id, 'b2')
|
|
|
|
self.assertEqual('b2', image_list[2].id)
|
|
|
|
self.assertRaises(AttributeError, lambda: image_list[3].owner)
|
|
|
|
self.assertRaises(AttributeError, lambda: image_list[3].owner)
|
|
|
|
self.assertEqual(image_list[3].id, 'c')
|
|
|
|
self.assertEqual('c', image_list[3].id)
|
|
|
|
self.assertEqual(len(image_list), 4)
|
|
|
|
self.assertEqual(4, len(image_list))
|
|
|
|
|
|
|
|
|
|
|
|
def test_image_list_with_owner_and_limit(self):
|
|
|
|
def test_image_list_with_owner_and_limit(self):
|
|
|
|
images = self.mgr.list(owner='B', page_size=5, limit=1)
|
|
|
|
images = self.mgr.list(owner='B', page_size=5, limit=1)
|
|
|
|
image_list = list(images)
|
|
|
|
image_list = list(images)
|
|
|
|
self.assertEqual(image_list[0].owner, 'B')
|
|
|
|
self.assertEqual('B', image_list[0].owner)
|
|
|
|
self.assertEqual(image_list[0].id, 'b')
|
|
|
|
self.assertEqual('b', image_list[0].id)
|
|
|
|
self.assertEqual(len(image_list), 1)
|
|
|
|
self.assertEqual(1, len(image_list))
|
|
|
|
|
|
|
|
|
|
|
|
def test_image_list_all_tenants(self):
|
|
|
|
def test_image_list_all_tenants(self):
|
|
|
|
images = self.mgr.list(is_public=None, page_size=5)
|
|
|
|
images = self.mgr.list(is_public=None, page_size=5)
|
|
|
|
image_list = list(images)
|
|
|
|
image_list = list(images)
|
|
|
|
self.assertEqual(image_list[0].owner, 'A')
|
|
|
|
self.assertEqual('A', image_list[0].owner)
|
|
|
|
self.assertEqual(image_list[0].id, 'a')
|
|
|
|
self.assertEqual('a', image_list[0].id)
|
|
|
|
self.assertEqual(image_list[1].owner, 'B')
|
|
|
|
self.assertEqual('B', image_list[1].owner)
|
|
|
|
self.assertEqual(image_list[1].id, 'b')
|
|
|
|
self.assertEqual('b', image_list[1].id)
|
|
|
|
self.assertEqual(image_list[2].owner, 'B')
|
|
|
|
self.assertEqual('B', image_list[2].owner)
|
|
|
|
self.assertEqual(image_list[2].id, 'b2')
|
|
|
|
self.assertEqual('b2', image_list[2].id)
|
|
|
|
self.assertRaises(AttributeError, lambda: image_list[3].owner)
|
|
|
|
self.assertRaises(AttributeError, lambda: image_list[3].owner)
|
|
|
|
self.assertEqual(image_list[3].id, 'c')
|
|
|
|
self.assertEqual('c', image_list[3].id)
|
|
|
|
self.assertEqual(len(image_list), 4)
|
|
|
|
self.assertEqual(4, len(image_list))
|
|
|
|
|
|
|
|
|
|
|
|
def test_update_v2_created_image_using_v1(self):
|
|
|
|
def test_update_v2_created_image_using_v1(self):
|
|
|
|
fields_to_update = {
|
|
|
|
fields_to_update = {
|
|
|
@@ -690,12 +690,12 @@ class ImageManagerTest(testtools.TestCase):
|
|
|
|
'x-image-meta-disk_format': 'qcow2',
|
|
|
|
'x-image-meta-disk_format': 'qcow2',
|
|
|
|
}
|
|
|
|
}
|
|
|
|
expect = [('PUT', '/v1/images/v2_created_img', expect_hdrs, None)]
|
|
|
|
expect = [('PUT', '/v1/images/v2_created_img', expect_hdrs, None)]
|
|
|
|
self.assertEqual(self.api.calls, expect)
|
|
|
|
self.assertEqual(expect, self.api.calls)
|
|
|
|
self.assertEqual(image.id, 'v2_created_img')
|
|
|
|
self.assertEqual('v2_created_img', image.id)
|
|
|
|
self.assertEqual(image.name, 'bar')
|
|
|
|
self.assertEqual('bar', image.name)
|
|
|
|
self.assertEqual(image.size, 0)
|
|
|
|
self.assertEqual(0, image.size)
|
|
|
|
self.assertEqual(image.container_format, 'bare')
|
|
|
|
self.assertEqual('bare', image.container_format)
|
|
|
|
self.assertEqual(image.disk_format, 'qcow2')
|
|
|
|
self.assertEqual('qcow2', image.disk_format)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ImageTest(testtools.TestCase):
|
|
|
|
class ImageTest(testtools.TestCase):
|
|
|
@@ -711,7 +711,7 @@ class ImageTest(testtools.TestCase):
|
|
|
|
('HEAD', '/v1/images/1', {}, None),
|
|
|
|
('HEAD', '/v1/images/1', {}, None),
|
|
|
|
('DELETE', '/v1/images/1', {}, None),
|
|
|
|
('DELETE', '/v1/images/1', {}, None),
|
|
|
|
]
|
|
|
|
]
|
|
|
|
self.assertEqual(self.api.calls, expect)
|
|
|
|
self.assertEqual(expect, self.api.calls)
|
|
|
|
|
|
|
|
|
|
|
|
def test_update(self):
|
|
|
|
def test_update(self):
|
|
|
|
image = self.mgr.get('1')
|
|
|
|
image = self.mgr.get('1')
|
|
|
@@ -720,7 +720,7 @@ class ImageTest(testtools.TestCase):
|
|
|
|
('HEAD', '/v1/images/1', {}, None),
|
|
|
|
('HEAD', '/v1/images/1', {}, None),
|
|
|
|
('PUT', '/v1/images/1', {'x-image-meta-name': 'image-5'}, None),
|
|
|
|
('PUT', '/v1/images/1', {'x-image-meta-name': 'image-5'}, None),
|
|
|
|
]
|
|
|
|
]
|
|
|
|
self.assertEqual(self.api.calls, expect)
|
|
|
|
self.assertEqual(expect, self.api.calls)
|
|
|
|
|
|
|
|
|
|
|
|
def test_data(self):
|
|
|
|
def test_data(self):
|
|
|
|
image = self.mgr.get('1')
|
|
|
|
image = self.mgr.get('1')
|
|
|
@@ -729,13 +729,13 @@ class ImageTest(testtools.TestCase):
|
|
|
|
('HEAD', '/v1/images/1', {}, None),
|
|
|
|
('HEAD', '/v1/images/1', {}, None),
|
|
|
|
('GET', '/v1/images/1', {}, None),
|
|
|
|
('GET', '/v1/images/1', {}, None),
|
|
|
|
]
|
|
|
|
]
|
|
|
|
self.assertEqual(self.api.calls, expect)
|
|
|
|
self.assertEqual(expect, self.api.calls)
|
|
|
|
self.assertEqual(data, 'XXX')
|
|
|
|
self.assertEqual('XXX', data)
|
|
|
|
|
|
|
|
|
|
|
|
data = ''.join([b for b in image.data(do_checksum=False)])
|
|
|
|
data = ''.join([b for b in image.data(do_checksum=False)])
|
|
|
|
expect += [('GET', '/v1/images/1', {}, None)]
|
|
|
|
expect += [('GET', '/v1/images/1', {}, None)]
|
|
|
|
self.assertEqual(self.api.calls, expect)
|
|
|
|
self.assertEqual(expect, self.api.calls)
|
|
|
|
self.assertEqual(data, 'XXX')
|
|
|
|
self.assertEqual('XXX', data)
|
|
|
|
|
|
|
|
|
|
|
|
def test_data_with_wrong_checksum(self):
|
|
|
|
def test_data_with_wrong_checksum(self):
|
|
|
|
image = self.mgr.get('2')
|
|
|
|
image = self.mgr.get('2')
|
|
|
@@ -744,12 +744,12 @@ class ImageTest(testtools.TestCase):
|
|
|
|
('HEAD', '/v1/images/2', {}, None),
|
|
|
|
('HEAD', '/v1/images/2', {}, None),
|
|
|
|
('GET', '/v1/images/2', {}, None),
|
|
|
|
('GET', '/v1/images/2', {}, None),
|
|
|
|
]
|
|
|
|
]
|
|
|
|
self.assertEqual(self.api.calls, expect)
|
|
|
|
self.assertEqual(expect, self.api.calls)
|
|
|
|
self.assertEqual(data, 'YYY')
|
|
|
|
self.assertEqual('YYY', data)
|
|
|
|
|
|
|
|
|
|
|
|
data = image.data()
|
|
|
|
data = image.data()
|
|
|
|
expect += [('GET', '/v1/images/2', {}, None)]
|
|
|
|
expect += [('GET', '/v1/images/2', {}, None)]
|
|
|
|
self.assertEqual(self.api.calls, expect)
|
|
|
|
self.assertEqual(expect, self.api.calls)
|
|
|
|
try:
|
|
|
|
try:
|
|
|
|
data = ''.join([b for b in image.data()])
|
|
|
|
data = ''.join([b for b in image.data()])
|
|
|
|
self.fail('data did not raise an error.')
|
|
|
|
self.fail('data did not raise an error.')
|
|
|
@@ -765,13 +765,13 @@ class ImageTest(testtools.TestCase):
|
|
|
|
('HEAD', '/v1/images/3', {}, None),
|
|
|
|
('HEAD', '/v1/images/3', {}, None),
|
|
|
|
('GET', '/v1/images/3', {}, None),
|
|
|
|
('GET', '/v1/images/3', {}, None),
|
|
|
|
]
|
|
|
|
]
|
|
|
|
self.assertEqual(self.api.calls, expect)
|
|
|
|
self.assertEqual(expect, self.api.calls)
|
|
|
|
self.assertEqual(data, 'ZZZ')
|
|
|
|
self.assertEqual('ZZZ', data)
|
|
|
|
|
|
|
|
|
|
|
|
data = ''.join([b for b in image.data()])
|
|
|
|
data = ''.join([b for b in image.data()])
|
|
|
|
expect += [('GET', '/v1/images/3', {}, None)]
|
|
|
|
expect += [('GET', '/v1/images/3', {}, None)]
|
|
|
|
self.assertEqual(self.api.calls, expect)
|
|
|
|
self.assertEqual(expect, self.api.calls)
|
|
|
|
self.assertEqual(data, 'ZZZ')
|
|
|
|
self.assertEqual('ZZZ', data)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ParameterFakeAPI(utils.FakeAPI):
|
|
|
|
class ParameterFakeAPI(utils.FakeAPI):
|
|
|
|