Revision 3768eb67
b/snf-cyclades-app/synnefo/api/tests/images.py | ||
---|---|---|
98 | 98 |
|
99 | 99 |
@assert_backend_closed |
100 | 100 |
def test_list_images_detail(self, mimage): |
101 |
self.maxDiff = None |
|
101 | 102 |
images = [{'id': 1, |
102 | 103 |
'name': 'image-1', |
103 | 104 |
'status':'available', |
... | ... | |
105 | 106 |
'updated_at': '2012-12-26 11:52:54', |
106 | 107 |
'owner': 'user1', |
107 | 108 |
'deleted_at': '', |
109 |
'is_snapshot': False, |
|
108 | 110 |
'properties': {'foo':'bar'}}, |
109 | 111 |
{'id': 2, |
110 | 112 |
'name': 'image-2', |
... | ... | |
113 | 115 |
'updated_at': '2012-12-26 11:52:54', |
114 | 116 |
'owner': 'user1', |
115 | 117 |
'deleted_at': '2012-12-27 11:52:54', |
118 |
'is_snapshot': False, |
|
116 | 119 |
'properties': ''}, |
117 | 120 |
{'id': 3, |
118 | 121 |
'name': 'image-3', |
... | ... | |
121 | 124 |
'deleted_at': '', |
122 | 125 |
'updated_at': '2012-12-26 11:52:54', |
123 | 126 |
'owner': 'user1', |
127 |
'is_snapshot': False, |
|
124 | 128 |
'properties': ''}] |
125 | 129 |
result_images = [ |
126 | 130 |
{'id': 1, |
... | ... | |
131 | 135 |
'updated': '2012-12-26T11:52:54+00:00', |
132 | 136 |
'user_id': 'user1', |
133 | 137 |
'tenant_id': 'user1', |
138 |
'is_snapshot': False, |
|
134 | 139 |
'metadata': {'foo':'bar'}}, |
135 | 140 |
{'id': 2, |
136 | 141 |
'name': 'image-2', |
... | ... | |
140 | 145 |
'tenant_id': 'user1', |
141 | 146 |
'created': '2012-11-26T11:52:54+00:00', |
142 | 147 |
'updated': '2012-12-26T11:52:54+00:00', |
148 |
'is_snapshot': False, |
|
143 | 149 |
'metadata': {}}, |
144 | 150 |
{'id': 3, |
145 | 151 |
'name': 'image-3', |
... | ... | |
149 | 155 |
'tenant_id': 'user1', |
150 | 156 |
'created': '2012-11-26T11:52:54+00:00', |
151 | 157 |
'updated': '2012-12-26T11:52:54+00:00', |
158 |
'is_snapshot': False, |
|
152 | 159 |
'metadata': {}}] |
153 | 160 |
mimage().list_images.return_value = images |
154 | 161 |
response = self.myget('images/detail', 'user') |
... | ... | |
174 | 181 |
'deleted_at': '', |
175 | 182 |
'updated_at': old_time.isoformat(), |
176 | 183 |
'owner': 'user1', |
184 |
'is_snapshot': False, |
|
177 | 185 |
'properties': ''}, |
178 | 186 |
{'id': 2, |
179 | 187 |
'name': 'image-2', |
... | ... | |
183 | 191 |
'created_at': new_time.isoformat(), |
184 | 192 |
'updated_at': new_time.isoformat(), |
185 | 193 |
'deleted_at': new_time.isoformat(), |
194 |
'is_snapshot': False, |
|
186 | 195 |
'properties': ''}] |
187 | 196 |
mimage().list_images.return_value = images |
188 | 197 |
response =\ |
... | ... | |
193 | 202 |
|
194 | 203 |
@assert_backend_closed |
195 | 204 |
def test_get_image_details(self, mimage): |
205 |
self.maxDiff = None |
|
196 | 206 |
image = {'id': 42, |
197 | 207 |
'name': 'image-1', |
198 | 208 |
'status': 'available', |
... | ... | |
200 | 210 |
'updated_at': '2012-12-26 11:52:54', |
201 | 211 |
'deleted_at': '', |
202 | 212 |
'owner': 'user1', |
213 |
'is_snapshot': False, |
|
203 | 214 |
'properties': {'foo': 'bar'}} |
204 | 215 |
result_image = \ |
205 | 216 |
{'id': 42, |
... | ... | |
210 | 221 |
'updated': '2012-12-26T11:52:54+00:00', |
211 | 222 |
'user_id': 'user1', |
212 | 223 |
'tenant_id': 'user1', |
224 |
'is_snapshot': False, |
|
213 | 225 |
'metadata': {'foo': 'bar'}} |
214 | 226 |
mimage.return_value.get_image.return_value = image |
215 | 227 |
response = self.myget('images/42', 'user') |
b/snf-cyclades-app/synnefo/logic/tests/servers.py | ||
---|---|---|
34 | 34 |
from synnefo.logic import servers |
35 | 35 |
from synnefo import quotas |
36 | 36 |
from synnefo.db import models_factory as mfactory, models |
37 |
from mock import patch |
|
37 |
from mock import patch, Mock
|
|
38 | 38 |
|
39 | 39 |
from snf_django.lib.api import faults |
40 | 40 |
from snf_django.utils.testing import mocked_quotaholder, override_settings |
41 | 41 |
from django.conf import settings |
42 | 42 |
from copy import deepcopy |
43 | 43 |
|
44 |
fixed_image = Mock() |
|
45 |
fixed_image.return_value = {'location': 'pithos://foo', |
|
46 |
'checksum': 'test_checksum', |
|
47 |
"id": 1, |
|
48 |
"name": "test_image", |
|
49 |
"size": 1024, |
|
50 |
"is_snapshot": False, |
|
51 |
'disk_format': 'diskdump'} |
|
44 | 52 |
|
53 |
|
|
54 |
@patch('synnefo.api.util.get_image', fixed_image) |
|
45 | 55 |
@patch("synnefo.logic.rapi_pool.GanetiRapiClient") |
46 | 56 |
class ServerCreationTest(TransactionTestCase): |
47 | 57 |
def test_create(self, mrapi): |
... | ... | |
51 | 61 |
"name": "test_vm", |
52 | 62 |
"password": "1234", |
53 | 63 |
"flavor": flavor, |
54 |
"image": {"id": "foo", "backend_id": "foo", "format": "diskdump", |
|
55 |
"checksum": "test_checksum", |
|
56 |
"metadata": "{}"}, |
|
64 |
"image_id": "safs", |
|
57 | 65 |
"networks": [], |
58 | 66 |
"metadata": {"foo": "bar"}, |
59 | 67 |
"personality": [], |
... | ... | |
103 | 111 |
with override_settings(settings, **osettings): |
104 | 112 |
vm = servers.create(**req) |
105 | 113 |
name, args, kwargs = mrapi().CreateInstance.mock_calls[-1] |
106 |
self.assertEqual(kwargs["disks"][0], {"provider": "archipelago", |
|
107 |
"origin": "test_checksum", |
|
108 |
"foo": "mpaz", |
|
109 |
"lala": "lolo", |
|
110 |
"size": 1024}) |
|
114 |
self.assertEqual(kwargs["disks"][0], |
|
115 |
{"provider": "archipelago", |
|
116 |
"origin": "pithos:test_checksum", |
|
117 |
"name": vm.volumes.all()[0].backend_volume_uuid, |
|
118 |
"foo": "mpaz", |
|
119 |
"lala": "lolo", |
|
120 |
"size": 1024}) |
|
111 | 121 |
|
112 | 122 |
|
113 | 123 |
@patch("synnefo.logic.rapi_pool.GanetiRapiClient") |
b/snf-cyclades-app/synnefo/volume/tests/volumes.py | ||
---|---|---|
52 | 52 |
name, args, kwargs = mrapi().ModifyInstance.mock_calls[0] |
53 | 53 |
self.assertEqual(kwargs["instance"], self.vm.backend_vm_id) |
54 | 54 |
disk_info = kwargs["disks"][0][2] |
55 |
self.assertEqual(disk_info["size"], self.size) |
|
55 |
self.assertEqual(disk_info["size"], self.size << 10)
|
|
56 | 56 |
self.assertEqual(disk_info["name"], vol.backend_volume_uuid) |
57 | 57 |
self.assertEqual(disk_info["volume_name"], vol.backend_volume_uuid) |
58 | 58 |
self.assertFalse("origin" in disk_info) |
... | ... | |
86 | 86 |
name, args, kwargs = mrapi().ModifyInstance.mock_calls[0] |
87 | 87 |
self.assertEqual(kwargs["instance"], self.vm.backend_vm_id) |
88 | 88 |
disk_info = kwargs["disks"][0][2] |
89 |
self.assertEqual(disk_info["size"], self.size) |
|
89 |
self.assertEqual(disk_info["size"], self.size << 10)
|
|
90 | 90 |
self.assertEqual(disk_info["name"], vol.backend_volume_uuid) |
91 | 91 |
self.assertEqual(disk_info["volume_name"], vol.backend_volume_uuid) |
92 | 92 |
self.assertEqual(disk_info["origin"], svol.backend_volume_uuid) |
... | ... | |
125 | 125 |
name, args, kwargs = mrapi().ModifyInstance.mock_calls[0] |
126 | 126 |
self.assertEqual(kwargs["instance"], self.vm.backend_vm_id) |
127 | 127 |
disk_info = kwargs["disks"][0][2] |
128 |
self.assertEqual(disk_info["size"], self.size) |
|
128 |
self.assertEqual(disk_info["size"], self.size << 10)
|
|
129 | 129 |
self.assertEqual(disk_info["name"], vol.backend_volume_uuid) |
130 | 130 |
self.assertEqual(disk_info["volume_name"], vol.backend_volume_uuid) |
131 | 131 |
self.assertEqual(disk_info["origin"], "snf-snapshot-43") |
132 | 132 |
|
133 | 133 |
def test_delete(self, mrapi): |
134 | 134 |
# We can not deleted detached volumes |
135 |
vol = mf.VolumeFactory(machine=None) |
|
135 |
vol = mf.VolumeFactory(machine=None, status="AVAILABLE")
|
|
136 | 136 |
self.assertRaises(faults.BadRequest, |
137 | 137 |
volumes.delete, |
138 | 138 |
vol) |
... | ... | |
141 | 141 |
# Also we cannot delete root volume |
142 | 142 |
vol.index = 0 |
143 | 143 |
vol.machine = vm |
144 |
vol.status = "IN_USE" |
|
145 |
vol.save() |
|
144 | 146 |
self.assertRaises(faults.BadRequest, |
145 | 147 |
volumes.delete, |
146 | 148 |
vol) |
Also available in: Unified diff