48
45
quota_gigabytes=20,
49
46
quota_floating_ips=1)
51
self.manager = manager.AuthManager()
52
self.user = self.manager.create_user('admin', 'admin', 'admin', True)
53
self.project = self.manager.create_project('admin', 'admin', 'admin')
54
48
self.network = self.network = self.start_service('network')
55
self.context = context.RequestContext(project=self.project,
59
manager.AuthManager().delete_project(self.project)
60
manager.AuthManager().delete_user(self.user)
61
super(QuotaTestCase, self).tearDown()
49
self.user_id = 'admin'
50
self.project_id = 'admin'
51
self.context = context.RequestContext(self.user_id,
63
55
def _create_instance(self, cores=2):
64
56
"""Create a test instance"""
66
58
inst['image_id'] = 1
67
59
inst['reservation_id'] = 'r-fakeres'
68
inst['user_id'] = self.user.id
69
inst['project_id'] = self.project.id
60
inst['user_id'] = self.user_id
61
inst['project_id'] = self.project_id
70
62
inst['instance_type_id'] = '3' # m1.large
71
63
inst['vcpus'] = cores
72
64
return db.instance_create(self.context, inst)['id']
95
87
num_instances = quota.allowed_instances(self.context, 100,
96
88
self._get_instance_type('m1.small'))
97
89
self.assertEqual(num_instances, 2)
98
db.quota_create(self.context, self.project.id, 'instances', 10)
90
db.quota_create(self.context, self.project_id, 'instances', 10)
99
91
num_instances = quota.allowed_instances(self.context, 100,
100
92
self._get_instance_type('m1.small'))
101
93
self.assertEqual(num_instances, 4)
102
db.quota_create(self.context, self.project.id, 'cores', 100)
94
db.quota_create(self.context, self.project_id, 'cores', 100)
103
95
num_instances = quota.allowed_instances(self.context, 100,
104
96
self._get_instance_type('m1.small'))
105
97
self.assertEqual(num_instances, 10)
106
db.quota_create(self.context, self.project.id, 'ram', 3 * 2048)
98
db.quota_create(self.context, self.project_id, 'ram', 3 * 2048)
107
99
num_instances = quota.allowed_instances(self.context, 100,
108
100
self._get_instance_type('m1.small'))
109
101
self.assertEqual(num_instances, 3)
113
105
num_metadata_items = quota.allowed_metadata_items(self.context,
115
107
self.assertEqual(num_metadata_items, FLAGS.quota_metadata_items)
116
db.quota_create(self.context, self.project.id, 'metadata_items', 5)
108
db.quota_create(self.context, self.project_id, 'metadata_items', 5)
117
109
num_metadata_items = quota.allowed_metadata_items(self.context,
119
111
self.assertEqual(num_metadata_items, 5)
122
db.quota_destroy_all_by_project(self.context, self.project.id)
114
db.quota_destroy_all_by_project(self.context, self.project_id)
124
116
def test_unlimited_instances(self):
125
FLAGS.quota_instances = 2
127
FLAGS.quota_cores = -1
117
self.flags(quota_instances=2, quota_ram=-1, quota_cores=-1)
128
118
instance_type = self._get_instance_type('m1.small')
129
119
num_instances = quota.allowed_instances(self.context, 100,
131
121
self.assertEqual(num_instances, 2)
132
db.quota_create(self.context, self.project.id, 'instances', None)
122
db.quota_create(self.context, self.project_id, 'instances', None)
133
123
num_instances = quota.allowed_instances(self.context, 100,
135
125
self.assertEqual(num_instances, 100)
138
128
self.assertEqual(num_instances, 101)
140
130
def test_unlimited_ram(self):
141
FLAGS.quota_instances = -1
142
FLAGS.quota_ram = 2 * 2048
143
FLAGS.quota_cores = -1
131
self.flags(quota_instances=-1, quota_ram=2 * 2048, quota_cores=-1)
144
132
instance_type = self._get_instance_type('m1.small')
145
133
num_instances = quota.allowed_instances(self.context, 100,
147
135
self.assertEqual(num_instances, 2)
148
db.quota_create(self.context, self.project.id, 'ram', None)
136
db.quota_create(self.context, self.project_id, 'ram', None)
149
137
num_instances = quota.allowed_instances(self.context, 100,
151
139
self.assertEqual(num_instances, 100)
154
142
self.assertEqual(num_instances, 101)
156
144
def test_unlimited_cores(self):
157
FLAGS.quota_instances = -1
159
FLAGS.quota_cores = 2
145
self.flags(quota_instances=-1, quota_ram=-1, quota_cores=2)
160
146
instance_type = self._get_instance_type('m1.small')
161
147
num_instances = quota.allowed_instances(self.context, 100,
163
149
self.assertEqual(num_instances, 2)
164
db.quota_create(self.context, self.project.id, 'cores', None)
150
db.quota_create(self.context, self.project_id, 'cores', None)
165
151
num_instances = quota.allowed_instances(self.context, 100,
167
153
self.assertEqual(num_instances, 100)
170
156
self.assertEqual(num_instances, 101)
172
158
def test_unlimited_volumes(self):
173
FLAGS.quota_volumes = 10
174
FLAGS.quota_gigabytes = -1
159
self.flags(quota_volumes=10, quota_gigabytes=-1)
175
160
volumes = quota.allowed_volumes(self.context, 100, 1)
176
161
self.assertEqual(volumes, 10)
177
db.quota_create(self.context, self.project.id, 'volumes', None)
162
db.quota_create(self.context, self.project_id, 'volumes', None)
178
163
volumes = quota.allowed_volumes(self.context, 100, 1)
179
164
self.assertEqual(volumes, 100)
180
165
volumes = quota.allowed_volumes(self.context, 101, 1)
181
166
self.assertEqual(volumes, 101)
183
168
def test_unlimited_gigabytes(self):
184
FLAGS.quota_volumes = -1
185
FLAGS.quota_gigabytes = 10
169
self.flags(quota_volumes=-1, quota_gigabytes=10)
186
170
volumes = quota.allowed_volumes(self.context, 100, 1)
187
171
self.assertEqual(volumes, 10)
188
db.quota_create(self.context, self.project.id, 'gigabytes', None)
172
db.quota_create(self.context, self.project_id, 'gigabytes', None)
189
173
volumes = quota.allowed_volumes(self.context, 100, 1)
190
174
self.assertEqual(volumes, 100)
191
175
volumes = quota.allowed_volumes(self.context, 101, 1)
192
176
self.assertEqual(volumes, 101)
194
178
def test_unlimited_floating_ips(self):
195
FLAGS.quota_floating_ips = 10
179
self.flags(quota_floating_ips=10)
196
180
floating_ips = quota.allowed_floating_ips(self.context, 100)
197
181
self.assertEqual(floating_ips, 10)
198
db.quota_create(self.context, self.project.id, 'floating_ips', None)
182
db.quota_create(self.context, self.project_id, 'floating_ips', None)
199
183
floating_ips = quota.allowed_floating_ips(self.context, 100)
200
184
self.assertEqual(floating_ips, 100)
201
185
floating_ips = quota.allowed_floating_ips(self.context, 101)
202
186
self.assertEqual(floating_ips, 101)
204
188
def test_unlimited_metadata_items(self):
205
FLAGS.quota_metadata_items = 10
189
self.flags(quota_metadata_items=10)
206
190
items = quota.allowed_metadata_items(self.context, 100)
207
191
self.assertEqual(items, 10)
208
db.quota_create(self.context, self.project.id, 'metadata_items', None)
192
db.quota_create(self.context, self.project_id, 'metadata_items', None)
209
193
items = quota.allowed_metadata_items(self.context, 100)
210
194
self.assertEqual(items, 100)
211
195
items = quota.allowed_metadata_items(self.context, 101)
294
278
metadata=metadata)
296
280
def test_default_allowed_injected_files(self):
297
FLAGS.quota_max_injected_files = 55
281
self.flags(quota_max_injected_files=55)
298
282
self.assertEqual(quota.allowed_injected_files(self.context, 100), 55)
300
284
def test_overridden_allowed_injected_files(self):
301
FLAGS.quota_max_injected_files = 5
302
db.quota_create(self.context, self.project.id, 'injected_files', 77)
285
self.flags(quota_max_injected_files=5)
286
db.quota_create(self.context, self.project_id, 'injected_files', 77)
303
287
self.assertEqual(quota.allowed_injected_files(self.context, 100), 77)
305
289
def test_unlimited_default_allowed_injected_files(self):
306
FLAGS.quota_max_injected_files = -1
290
self.flags(quota_max_injected_files=-1)
307
291
self.assertEqual(quota.allowed_injected_files(self.context, 100), 100)
309
293
def test_unlimited_db_allowed_injected_files(self):
310
FLAGS.quota_max_injected_files = 5
311
db.quota_create(self.context, self.project.id, 'injected_files', None)
294
self.flags(quota_max_injected_files=5)
295
db.quota_create(self.context, self.project_id, 'injected_files', None)
312
296
self.assertEqual(quota.allowed_injected_files(self.context, 100), 100)
314
298
def test_default_allowed_injected_file_content_bytes(self):
315
FLAGS.quota_max_injected_file_content_bytes = 12345
299
self.flags(quota_max_injected_file_content_bytes=12345)
316
300
limit = quota.allowed_injected_file_content_bytes(self.context, 23456)
317
301
self.assertEqual(limit, 12345)
319
303
def test_overridden_allowed_injected_file_content_bytes(self):
320
FLAGS.quota_max_injected_file_content_bytes = 12345
321
db.quota_create(self.context, self.project.id,
304
self.flags(quota_max_injected_file_content_bytes=12345)
305
db.quota_create(self.context, self.project_id,
322
306
'injected_file_content_bytes', 5678)
323
307
limit = quota.allowed_injected_file_content_bytes(self.context, 23456)
324
308
self.assertEqual(limit, 5678)
326
310
def test_unlimited_default_allowed_injected_file_content_bytes(self):
327
FLAGS.quota_max_injected_file_content_bytes = -1
311
self.flags(quota_max_injected_file_content_bytes=-1)
328
312
limit = quota.allowed_injected_file_content_bytes(self.context, 23456)
329
313
self.assertEqual(limit, 23456)
331
315
def test_unlimited_db_allowed_injected_file_content_bytes(self):
332
FLAGS.quota_max_injected_file_content_bytes = 12345
333
db.quota_create(self.context, self.project.id,
316
self.flags(quota_max_injected_file_content_bytes=12345)
317
db.quota_create(self.context, self.project_id,
334
318
'injected_file_content_bytes', None)
335
319
limit = quota.allowed_injected_file_content_bytes(self.context, 23456)
336
320
self.assertEqual(limit, 23456)
338
322
def _create_with_injected_files(self, files):
339
FLAGS.image_service = 'nova.image.fake.FakeImageService'
323
self.flags(image_service='nova.image.fake.FakeImageService')
340
324
api = compute.API(image_service=self.StubImageService())
341
325
inst_type = instance_types.get_instance_type_by_name('m1.small')
342
326
api.create(self.context, min_count=1, max_count=1,