5
from tests.v1 import utils
7
import glanceclient.v1.images
10
class ImageManagerTest(unittest.TestCase):
13
self.api = utils.FakeAPI()
14
self.mgr = glanceclient.v1.images.ImageManager(self.api)
17
images = self.mgr.list()
18
expect = [('GET', '/v1/images/detail', {}, None)]
19
self.assertEqual(self.api.calls, expect)
20
self.assertEqual(len(images), 1)
21
self.assertEqual(images[0].id, '1')
22
self.assertEqual(images[0].name, 'image-1')
23
self.assertEqual(images[0].properties, {'arch': 'x86_64'})
25
def test_list_with_limit(self):
26
self.mgr.list(limit=10)
27
expect = [('GET', '/v1/images/detail?limit=10', {}, None)]
28
self.assertEqual(self.api.calls, expect)
30
def test_list_with_marker(self):
31
self.mgr.list(marker=20)
32
expect = [('GET', '/v1/images/detail?marker=20', {}, None)]
33
self.assertEqual(self.api.calls, expect)
35
def test_list_with_filter(self):
36
self.mgr.list(filters={'name': "foo"})
37
expect = [('GET', '/v1/images/detail?name=foo', {}, None)]
38
self.assertEqual(self.api.calls, expect)
41
image = self.mgr.get('1')
42
expect = [('HEAD', '/v1/images/1', {}, None)]
43
self.assertEqual(self.api.calls, expect)
44
self.assertEqual(image.id, '1')
45
self.assertEqual(image.name, 'image-1')
47
def test_delete(self):
49
expect = [('DELETE', '/v1/images/1', {}, None)]
50
self.assertEqual(self.api.calls, expect)
52
def test_create_without_data(self):
56
'container_format': 'ovf',
62
'copy_from': 'http://example.com',
63
'properties': {'a': 'b', 'c': 'd'},
65
image = self.mgr.create(**params)
67
'x-image-meta-id': '1',
68
'x-image-meta-name': 'image-1',
69
'x-image-meta-container_format': 'ovf',
70
'x-image-meta-disk_format': 'vhd',
71
'x-image-meta-owner': 'asdf',
72
'x-image-meta-size': '1024',
73
'x-image-meta-min_ram': '512',
74
'x-image-meta-min_disk': '10',
75
'x-glance-api-copy-from': 'http://example.com',
76
'x-image-meta-property-a': 'b',
77
'x-image-meta-property-c': 'd',
79
expect = [('POST', '/v1/images', expect_headers, None)]
80
self.assertEqual(self.api.calls, expect)
81
self.assertEqual(image.id, '1')
82
self.assertEqual(image.name, 'image-1')
83
self.assertEqual(image.container_format, 'ovf')
84
self.assertEqual(image.disk_format, 'vhd')
85
self.assertEqual(image.owner, 'asdf')
86
self.assertEqual(image.size, '1024')
87
self.assertEqual(image.min_ram, '512')
88
self.assertEqual(image.min_disk, '10')
89
self.assertEqual(image.properties, {'a': 'b', 'c': 'd'})
91
def test_create_with_data(self):
92
image_data = StringIO.StringIO('XXX')
93
self.mgr.create(data=image_data)
94
expect_headers = {'x-image-meta-size': '3'}
95
expect = [('POST', '/v1/images', expect_headers, image_data)]
96
self.assertEqual(self.api.calls, expect)
98
def test_update(self):
101
'container_format': 'ovf',
102
'disk_format': 'vhd',
107
'copy_from': 'http://example.com',
108
'properties': {'a': 'b', 'c': 'd'},
110
image = self.mgr.update('1', **fields)
112
'x-image-meta-name': 'image-2',
113
'x-image-meta-container_format': 'ovf',
114
'x-image-meta-disk_format': 'vhd',
115
'x-image-meta-owner': 'asdf',
116
'x-image-meta-size': '1024',
117
'x-image-meta-min_ram': '512',
118
'x-image-meta-min_disk': '10',
119
'x-glance-api-copy-from': 'http://example.com',
120
'x-image-meta-property-a': 'b',
121
'x-image-meta-property-c': 'd',
123
expect = [('PUT', '/v1/images/1', expect_hdrs, None)]
124
self.assertEqual(self.api.calls, expect)
125
self.assertEqual(image.id, '1')
126
self.assertEqual(image.name, 'image-2')
128
def test_update_with_data(self):
129
image_data = StringIO.StringIO('XXX')
130
self.mgr.update('1', data=image_data)
131
expect_headers = {'x-image-meta-size': '3'}
132
expect = [('PUT', '/v1/images/1', expect_headers, image_data)]
133
self.assertEqual(self.api.calls, expect)
136
class ImageTest(unittest.TestCase):
138
self.api = utils.FakeAPI()
139
self.mgr = glanceclient.v1.images.ImageManager(self.api)
141
def test_delete(self):
142
image = self.mgr.get('1')
145
('HEAD', '/v1/images/1', {}, None),
146
('DELETE', '/v1/images/1', {}, None),
148
self.assertEqual(self.api.calls, expect)
150
def test_update(self):
151
image = self.mgr.get('1')
152
image.update(name='image-5')
154
('HEAD', '/v1/images/1', {}, None),
155
('PUT', '/v1/images/1', {'x-image-meta-name': 'image-5'}, None),
157
self.assertEqual(self.api.calls, expect)