Revision dad1b874
b/kamaki/clients/image/__init__.py | ||
---|---|---|
198 | 198 |
req = {'memberships': [{'member_id': member} for member in members]} |
199 | 199 |
r = self.put(path, json=req, success=204) |
200 | 200 |
return r.headers |
201 |
|
|
202 |
def update_image( |
|
203 |
self, image_id, |
|
204 |
name=None, disk_format=None, container_format=None, |
|
205 |
status=None, public=None, owner_id=None, **properties): |
|
206 |
path = path4url('images', image_id) |
|
207 |
if name is not None: |
|
208 |
self.set_header('X-Image-Meta-Name', name) |
|
209 |
if disk_format is not None: |
|
210 |
self.set_header('X-Image-Meta-Disk-Format', disk_format) |
|
211 |
if container_format is not None: |
|
212 |
self.set_header('X-Image-Meta-Container-Format', container_format) |
|
213 |
if status is not None: |
|
214 |
self.set_header('X-Image-Meta-Status', status) |
|
215 |
if public is not None: |
|
216 |
self.set_header('X-Image-Meta-Is-Public', bool(public)) |
|
217 |
if owner_id is not None: |
|
218 |
self.set_header('X-Image-Meta-Owner', owner_id) |
|
219 |
for k, v in properties.items(): |
|
220 |
self.set_header('X-Image-Meta-Property-%s' % k, v) |
|
221 |
r = self.put(path, success=200) |
|
222 |
return r.headers |
b/kamaki/clients/image/test.py | ||
---|---|---|
290 | 290 |
for i in range(len(r)): |
291 | 291 |
self.assert_dicts_are_equal(r[i], example_images[i]) |
292 | 292 |
|
293 |
@patch('%s.put' % image_pkg, return_value=FR()) |
|
294 |
@patch('%s.set_header' % image_pkg) |
|
295 |
def test_update_image(self, set_header, put): |
|
296 |
FR.headers = 'some headers' |
|
297 |
hcnt = 0 |
|
298 |
for args in product( |
|
299 |
('some id', 'other id'), |
|
300 |
('image name', None), ('disk fmt', None), ('cnt format', None), |
|
301 |
('status', None), (True, False, None), ('owner id', None), |
|
302 |
(dict(k1='v1', k2='v2'), {})): |
|
303 |
r = self.client.update_image(*args[:-1], **args[-1]) |
|
304 |
(image_id, name, disk_format, container_format, |
|
305 |
status, public, owner_id, properties) = args |
|
306 |
self.assertEqual(r, FR.headers) |
|
307 |
header_calls = [] |
|
308 |
prf = 'X-Image-Meta-' |
|
309 |
if name: |
|
310 |
header_calls.append(call('%sName' % prf, name)) |
|
311 |
if disk_format: |
|
312 |
header_calls.append(call('%sDisk-Format' % prf, disk_format)) |
|
313 |
if container_format: |
|
314 |
header_calls.append( |
|
315 |
call('%sContainer-Format' % prf, container_format)) |
|
316 |
if status: |
|
317 |
header_calls.append(call('%sStatus' % prf, status)) |
|
318 |
if public is not None: |
|
319 |
header_calls.append(call('%sIs-Public' % prf, public)) |
|
320 |
if owner_id: |
|
321 |
header_calls.append(call('%sOwner' % prf, owner_id)) |
|
322 |
for k, v in properties.items(): |
|
323 |
header_calls.append(call('%sProperty-%s' % (prf, k), v)) |
|
324 |
self.assertEqual( |
|
325 |
sorted(set_header.mock_calls[hcnt:]), sorted(header_calls)) |
|
326 |
hcnt = len(set_header.mock_calls) |
|
327 |
self.assertEqual( |
|
328 |
put.mock_calls[-1], call('/images/%s' % image_id, success=200)) |
|
329 |
|
|
330 |
|
|
293 | 331 |
if __name__ == '__main__': |
294 | 332 |
from sys import argv |
295 | 333 |
from kamaki.clients.test import runTestCase |
Also available in: Unified diff